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