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