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