Update CHANGES for 1.0.3.
[polipo.git] / CHANGES
blobe68678dca3a0850e15e8bcbbdf45d43cc932b81a
1 6 October 2007: Polipo 1.0.3
3         Changed the default for chunkMemory: it is now 24 MB or
4         one-quarter of physical memory, whichever is smaller.
5         Support for logging to syslog (thanks to Nix).
6         Made atom reference counts 32-bit longs; this should fix
7         problems that people were seeing when running Polipo with
8         humongous in-memory caches.
9         Added Git, Jabber and CVS to default tunnelAllowedPorts.
10         Fixed a bug that could cause URL matching to fail when using
11         anchored regular expressions (thanks to phuel).
13 26 August 2007: Polipo 1.0.2:
15         Fixed a crash that could happen with entities more than 2GB in
16         size.  Such entities are still not supported, but Polipo
17         should no longer crash.
18         Minor HTTP compliance fixes, due to testing with Co-Advisor.
19         Fixed a crash that would happen when a POST request was aborted
20         by the server.  Reported by Tero Pelander.
21         Worked around a DNS-related bug that I'm unable to track down,
22         waiting for a proper fix.
24 25 June 2007: Polipo 1.0.1:
26         Made Polipo slightly more aggressive when speaking to
27         HTTP/1.0 servers (thanks to Fabian Keil for noticing that).
28         Fixed a crash that would happen when a client used
29         Cache-Control: only-if-cached, and the object was not in cache.
30         (Reported by F. Zappa, A. Patala and V. Ghosal.)
31         Fixed a descriptor leak when running under Windows.
32         Made Polipo optionally drop connections after servicing
33         a number of connections (maxConnectionAge and maxConnectionRequests).
35 6 March 2007: Polipo 1.0.0
37         No changes since 0.9.99.2.
39 7 February 2007: Polipo 0.9.99.2
41         Fixed a buffer overflow in urlDirname (the 0.9 branch is not
42         vulnerable) (reported by J. P. Larocque).
43         Implemented use of IPv6 temporary source addresses (Frank Behrens).
44         Disabled use of unaligned range requests by default.  This is
45         controlled by the variable allowUnalignedRangeRequests (reported
46         by Chris Moore).
47         Fixed descriptor leaks in SOCKS error handling (reported by
48         Roger Dingledine).
49         Implemented maxSideBuffering.
51 6 February 2007: Polipo 0.9.12
53         Fixed incorrect caching of redirects (reported by Lawrence Lu).
54         Fixed a possible hang when falling back to gethostbyname
55         (reported by Chris Moore).
57 28 December 2006: Polipo 0.9.99.1
59         Validation improvements and bug fixes.
60         Don't use cached data when receiving the output from an HTTP/1.0 CGI.
61         Allowed tunnelling of IMAP and POP traffic by default.
62         Changed the disk cache expiry and indexing functions to use chunks.
63         Made the disk cache unreadable by others by default.
64         Fixed a bug that could cause stale data to be served after
65         a connection failure (reported by Hondza).
66         Fixed computation of age and rtt for pipelined requests.
67         Fixed incorrect cachability of redirects (reported by J.-P. Larocque).
68         Fixed a bug that would cause uncachable objects to become
69         cachable after being reloaded from the on-disk cache (reported
70         by J.-P. Larocque).
71         Implemented dontTrustVaryETag.
73 7 December 2006: Polipo 0.9.11
75         Fixed a crash that could happen when a network interface went down
76         while a DNS query was in progress (reported by Francesco Zappa).
78 20 November 2006: Polipo 0.9.99.0:
80         Implemented large buffers for headers larger than a chunk's worth.
81         Made the HTTP parser lax by default (ignores unknown headers).
82         Implemented the infrastructure for local POST requests and
83         implemented a real configuration interface (thanks to Theo Honohan).
84         Made timeouts user-configurable and enforced an invariant between
85         timeouts.
86         Made logging configurable at runtime (thanks to Frank Behrens).
87         Implemented the infrastructure for asynchronous handling of 
88         forbidden URLs.
89         Implemented the ability to redirect instead of returning an
90         error for forbidden URLs.
91         Implemented support for Squid-style redirectors.
92         Implemented User-configurable uncacheable URLs, analogous to
93         forbidden URLs (thanks to Joachim Haga).
94         Implemented the ability to avoid caching pages with cookies
95         and redirects.
96         Implemented maxPipelineTrain, which can be used to moderate
97         Polipo's eagerness to pipeline.
98         Unified parentHost and parentPort into parentProxy.
99         Ported Polipo to native Windows (thanks to Dan Kennedy).
100         Implemented disableVia.
101         Implemented SOCKS support.
102         Made disableVia and cacheIsShared to be true by default.
103         Increased the default value of serverMaxSlots to 8.
104         Made the disk cache code quote all characters except for a
105         small number of ``known safe'' ones.  This is an incompatible
106         change to the on-disk format.
107         Changed HTTP parser to pass all Pragma headers to the next
108         hop; this should make some media players work through Polipo.
109         Changed the connection scheduler to avoid pipelining when
110         there are idle connections to a given server.
111         Made Polipo obey parentProxy when tunnelling (proxying https).
112         Changed the default value of allowedPorts to be slightly more
113         permissive.
114         Implemented tweakables for selectively disabling parts of the
115         configuration interface.  Indexing and listing known servers
116         are now disabled by default.
117         Hide variables containing passwords.
118         Fixed a bug that could cause incorrect validation when speaking
119         to an HTTP/1.0 server.
120         Fixed a bug that could cause incorrect validation of Vary objects.
121         Fixed a crash in the redirector code.
122         Made disableVia the default, and changed the default value of idleTime.
123         Made polipo delay serving of partial objects until after a
124         a successful validation.  This should fix Mozilla's prefetching.
125         On 64-bit blatforms, made CHUNK_SIZE default to 8kB.
127 2 September 2006: Polipo 0.9.10:
129         Fixed a crash when a client closes a connection at just the
130         wrong time.
131         Fixed a crash that could happen when a server returned
132         incorrect headers and closed the connection at just the wrong
133         time.
134         Fixed restarting of connections on a server-side read error;
135         this should avoid the ``connection reset by peer'' problem.
136         Corrected work-around for DNS servers that export both AAAA
137         and CNAME.
138         Fix incorrect error handling when overflowing the buffer when
139         saving an entity to disk.
140         IPv6 tweaks for OpenBSD (thanks to Jun-ichiro itojun Hagino).
141         Fixed incorrect error-handling on failure to parse a date.
142         Fixed a deadlock when a tunnel is shut down and the buffer is
143         full.
144         Fixed an incorrect use of va_start (guaranteed crash on AMD64).
145         Fixed a possible race condition with a heavily pipelining client.
146         Fixed a crash due to incorrect handling of write errors in POST.
148 23 September 2005: Polipo 0.9.9:
150         Fixed a bug that could cause objects to be incorrectly
151         determined to be dynamic (thanks to Joachim B. Haga).
152         Fixed a bug that could cause the local web server to expose
153         files that are not under the local root (thanks to Wessel
154         Dankers).
155         Fixed an off-by-one bug when parsing NL-terminated headers.
156         Made Polipo forget about failures when finishing on the client
157         side.
158         Polipo now sends Host headers even when speaking to an upstream
159         proxy.  Some proxies take RFC 2616 literally, and require that
160         (thanks to Zoltan Ivanfi).
161         Fixed some bugs in staleness computation, and implemented
162         server-side max-age directives (oops!) (thanks to Charley Chu).
164 24 January 2005: Polipo 0.9.8:
166         Backported the lax HTTP parser from the head branch.
167         Fixed a race condition that could cause a crash if a single
168         object was being superseded twice at the same time.
169         Fixed an incorrect test that caused Polipo to pipeline to all
170         HTTP/1.1 servers, even when they were determined as broken (thanks
171         to Daniel Koukola).
172         Implemented maxPipelineTrain.
173         Tweaked for uclibc (thanks to Detlef Riekenberg).
175 27 December 2004: Polipo 0.9.7:
177         Fixed a possible crash when tunnelling.
178         Fixed spurious updates of object sizes when connection is
179         dropped by client.
180         Fixed parsing of URLs with explicit port number (thanks to
181         Frank Behrens).
182         Fixed a possible crash when exiting POST in error.
183         Fixed a protocol violation when an empty object is not superseded.
185 31 October 2004: Polipo 0.9.6:
186         Fixed a possible crash in ServeObject.
187         Fixed two possible crashes when relaxTransparency is not false.
188         Modified the config file parser to make it possible to have
189         backslashes in atoms.
190         Fixed a violated invariant (leading to a crash) when 
191         superseding objects.
192         Fixed a possible crash in ClientFinish when a pipelined
193         request carries no object.
194         Fixed a bug in handling of client-side Expect: 100-continue
195         (reported by Charley Chu).
196         Fixed a scheduling bug that caused server-side requests to be
197         issued in the order opposite to a client-side pipeline (many
198         thanks to Joachim Haga).
199         Abort when the config file couldn't be parsed (thanks to
200         Joachim Haga).
201         Fixed error handling in POST and PUT requests, which could
202         cause a crash on an I/O error.
204 17 June 2004: Polipo 0.9.5:
205         Implemented upstream proxy authentication (HTTP Basic only).
206         Fixed a possible crash when unable to schedule servicing a
207         request.
208         Fixed a possible crash when tunnelling (proxying https).
209         Fixed signedness issues to make allowedClients work on PPC
210         (from Gergely Nagy).
212 10 May 2004: Polipo 0.9.4:
213         Fixed a bug (introduced in 0.9.3) that could cause a crash
214         when the download of an object was interrupted and then immediately
215         restarted.
216         Fixed a bug that could cause stale non-200 repliles to be
217         served.
218         Fixed compilation on FreeBSD 5.2.1 (from Samuel Tardieu).
219         Fixed definition of *_ROOT in diskcache.c
221 6 April 2004: Polipo 0.9.3:
222         Fix incorrect handling of EPIPE when tunnelling; this could
223         cause crashes if a peer closed a connection when we're
224         writing.
225         Fix a race condition that could cause ``error message lost in
226         transit'' errors if a request was cancelled during connect.
227         Check for exitFlag in workToDo: faster reaction to signals.
229 28 March 2004: Polipo 0.9.2:
230         Fixed a bug that could cause crashes when writing out small
231         objects (thanks to Frank Behrens).
232         Made buffer allocation in httpParseHeaders dynamic.
233         Fixed the declaration of pipelineAdditionalRequests.
234         Fixed a bug that could cause empty directories to be missed
235         when expiring the disk cache.
236         Switched the forbidden file to use extended regexps, the
237         previous usage was non-portable (thanks to Frank Behrens).
239 9 March 2004: Polipo 0.9.1:
240         Fixed a bug that could cause chunked encoding failures when
241         going from a 1.0 server to a 1.1 client.
242         Fixed a bug that prevented comments after some config lines
243         (thanks to Tom Huckstep).
244         Fixed a possible buffer overflow in dnsDecodeReply.
245         Fixed portability to systems where rmdir returns EEXIST
246         instead of ENOTEMPTY.
247         Fixed error handling on fork failures in fillSpecialObject.
248         Fixed handling of EINTR in wait in specialRequestHandler.
249         Fixed a bug that caused objects with no headers to fail.
250         Fixed a minor memory leak in the config file parser.
251         Minor build fixes for NetBSD.
252         Added the 68020 and later to the list of architectures that
253         support unaligned access.
255 18 February 2004: Polipo 0.9:
256         Reworked the DNS code to parse ids even when a reply's qdcount
257         is 0.  No longer falls back to gethostbyname when DNS server
258         returns FormErr.
259         Made the DNS code parse resolv.conf.
261 11 Feburary 2004: Polipo 0.8.99.3:
262         Minor changes to work around Cygwin mis-design.
263         Fixed printing of n-state variables.
264         Fixed proxyOffline handling.
265         Fixed a bug that would cause errors to be reported with the
266         wrong content-type.
267         Fixed a bug that would cause ``object vanished'' errors when
268         using HEAD for revalidation.
269         Fixed a bug that could cause failed requests due to ``client
270         reset connection'' errors.
272 24 January 2004: Polipo 0.8.99.2:
273         Cleaned up authentication.
274         Made authenticated replies cachable in one of the cases allowed
275         by RFC 2616.
276         Fixed a bug that could, under some circumstances, cause a
277         password-protected object to be cached and returned to a
278         non-authorized client.
279         Implemented 100-continue, controlled by the variable expectContinue.
280         Implemented tristate, 4- and 5-state variables.  Split
281         proxyOffline into proxyOffline and relaxTransparency.  This is
282         an incompatible change to the config file format.
283         Cleaned up the handling of allowed port ranges.  New
284         configuration variable allowedPorts (and new type intlist).
285         Implemented tunnelling through the CONNECT method (https
286         proxying).
287         Will now read a request body on error (avoids a deadlock).
288         Reworked the PUT/POST code to read the reply eagerly rather
289         than waiting for the write to finish (avoids writing the full
290         body on error and avoids the same deadlock as above).
291         Made server addresses sticky: will now remember which of a
292         servers addresses worked last time, and use that address first.
294 16 january 2004: Polipo 0.8.99.1:
295         Fixed an expiry bug that caused DNS queries to be repeated on
296         each request.
297         Added the variable ``preciseExpiry'' that prevents trusting
298         the mtime during expiry.
300 14 January 2004: Polipo 0.8.99.0:
301         Implemented IP address-based authentication.
302         Implemented HTTP ``basic'' authentication.
303         Implemented variable body offsets for the on-disk cache; this
304         makes the on-disk cache format incompatible with previous versions.
305         Made the number of server slots configurable.
306         Partially rewrote the disk cache code.
307         Fixed a file descriptor leak in the early error handling code.
308         Fixed a bug in the base64 encoder; this makes the on-disk cache
309         format incompatible with previous versions.
310         Implemented proper reporting for 100-Continue replies
311         (100-Continue is not implemented yet).
312         Made the number of server slots configurable at runtime.
314 9 January 2004: Polipo 0.8.4:
315         Log file is now line buffered.
316         Will reopen the log file on SIGUSR1 and SIGUSR2.
317         censoredHeaders now defaults to none, and censorReferer to 0.
318         Fixed a memory allocation bug that could cause a crash.
320 21 December 2003: Polipo 0.8.3:
321         Fixed a potential buffer overflow on C89 systems in snnprintf.
322         Fixed checking of Via headers.
323         Added configurable log file.
324         Added code to run as a daemon.
325         Made the resolver grok names ending in a ``.''.
326         Changed Makefile to fit Debian better.
328 7 December 2003: Polipo 0.8.2:
329         Implemented a version of fts for SVR4 systems.
330         Implemented a version of mktime_gmt that doesn't use setenv.
331         Fixed code used to determine FQDN.
332         More unaligned access fixes.
333         Disabled queryIPv6 when there is no IPv6 support in kernel.
334         Enabled IPv6 support by default on FreeBSD and NetBSD.
336 2 December 2003: Polipo 0.8.1:
338         Fix a possible crash when doing a POST on a busy server.
339         Fix a possible crash when socket(2) fails; implement switching
340         to a different address when socket(2) fails (e.g. when
341         accessing a double-stack host from an IPv4-only client).
342         Fix a problem with servers stuck in the ``probing'' state.
343         Work around a bug in Konqueror that strips question marks from
344         URLs.
345         Fix incorrect error handling when dealing with connection
346         failures.
347         Fix a compile problem in dns.c.
348         Remove dependency on SSL, include MD5 code instead.
349         Fix signedness of s_maxage.
351 23 November 2003: Polipo 0.8:
353         IPv6 support, on both the client and server side, including
354         DNS support and RFC 2732.
355         Reworked the DNS code.
356         Made it possible to compile without any particular resolver
357         and without the on-disk cache.
358         Fixed a problem with the chunking encoder.
359         Made the config file parser grok octal and hex values, allowed
360         colons and tildes in unquoted strings.
361         Implemented tilde expansion in some config variables.
362         Made Polipo slightly less eager to honour range requests for
363         dynamic instances.  Marked generated objects as dynamic. These
364         changes should solve some of the problems with PMM.
365         Implemented the If-Range header (on both the client and server
366         side).
367         Implemented support for range requests smaller than one chunk
368         (and hence for pmmSize being smaller than CHUNK_SIZE).
369         Fixed a bug that caused a deadlock (until a server timeout)
370         when doing a POST/PUT request with no free connection slots.
371         Fixed a problem when diskCacheRoot didn't end in `/'.
372         Fixed a refcounting problem that could cause Polipo to crash
373         on a DNS timeout.
374         Fixed an alignment problem that could cause crashes on 
375         architectures that don't like unaligned memory accesses
376         (thanks to Rob Byrnes).
377         Fixed a bug with the disk cache that caused spurious ``disk
378         entry changed behind our back'' warnings (and in principle
379         could cause data corruption, although that's very unlikely).
380         Made opening connections slightly less aggressive -- Polipo
381         would sometimes open two connections where only one was needed.
382         Modified client-side code to notice client shutdowns earlier
383         and notify the server side straight away.
385 7 October 2003: Polipo 0.7
387         Made the Request function a method of objects.
388         Fixed a bug that could sometimes cause data corruption.
389         Fixed a bug that could cause sending of incorrect data to
390         the client on a range request.
391         Fixed POST and PUT requests.
392         Fixed a bug that could sometimes cause a POST request to use a
393         stale connection.
394         Included code to do poor man's multiplexing.
395         Will now open multiple connections to non-persistent servers.
396         Fixed a bug that could lead to idle connections dying without
397         being noticed.
398         Fixed probing for pipelining.
399         Actually use the new time function introduced in 0.5.
400         Fixed a bug in strcasecmp_n.
401         ForbiddenFile can now be a directory.
403 26 September 2003: Polipo 0.6
405         Fixed precondition handling.
406         Fixed a bug that could lead to lockups when revalidating an
407         object.
409 27 June 2003: Polipo 0.5
411         Made the presence of a reader or writer explicit on the client
412         side.
413         Reworked closing client connections.
414         Reworked reporting of server-side errors.
415         Made buffer allocation lazy; idle clients and servers no
416         longer use up buffers.
417         Reworked UTC time handling to use timegm(3) when available.
419 12 March 2003: Polipo 0.4
421         Implemented expiry of the on-disk cache.
422         Implemented reliable aborting of connections; Polipo should no
423         longer deadlock when a server falls into a black hole.
424         Changed direct reads to be more aggressive by using readv in
425         three pieces.
426         Changed serving of chunked data to be more eager about
427         serving a chunk's end marker.
428         Implemented better reporting of DNS errors.
429         Fixed a deadlock with pipelining on the client side.
430         Removed most of the remaining copies when reading on the
431         server side.
432         Fixed a bug that caused some headers to disappear in transit.
433         Fixed a possible livelock when reading chunked encoding.
434         Fixed an overflow when pipelining on the server side.
435         Fixed generation of indexes from the on-disk cache.
436         Fixed a DNS crash when falling back on gethostbyname.
438 1 March 2003: Polipo 0.3
440         Implemented retrying of timed-out DNS requests.
441         Implemented configuration mechanisms for case-insensitive
442         atoms, time values and atom lists; censoredHeaders can now be
443         configured.
444         No longer censors User-Agent.  Blame Beppe and Alain.
445         Changed the handling of hop-by-hop HTTP headers to deal with
446         multiple Connection headers.
447         Made client-side errors and successful revalidation no longer
448         close the connection.
449         Fixed a bug that caused the allocation of an extraneous 2MB (!)
450         at startup.  Polipo can run in 100KB once again.
451         Fixed a refcounting bug and some incorrect frees that could
452         lead to crashes when recovering from a server-side error.
453         Fixed a bug with POST/PUT that could trigger a failed assertion.
454         Made sure that POST/PUT don't get scheduled in multiple pieces.
456 17 February 2003: Polipo 0.2
458         Fixed an incorrect assertion that could cause crashes when the
459         server is fast.
460         Fixed (hopefully) logic for 304 replies.
461         Minor tweaks to scheduling that cause some speed increase when the
462         client is pipelining and the server is fast.
463         Minor bug fixes and cleanups.
464         Macro-ified do_log and friends.
466 3 February 2003: Polipo 0.1
468         Initial public release.