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