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
35 Fixed descriptor leaks in SOCKS error handling (reported by
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
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
74 Made logging configurable at runtime (thanks to Frank Behrens).
75 Implemented the infrastructure for asynchronous handling of
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
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
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
119 Fixed a crash that could happen when a server returned
120 incorrect headers and closed the connection at just the wrong
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
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
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
143 Fixed an off-by-one bug when parsing NL-terminated headers.
144 Made Polipo forget about failures when finishing on the client
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
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
168 Fixed parsing of URLs with explicit port number (thanks to
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
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
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
196 Fixed a possible crash when tunnelling (proxying https).
197 Fixed signedness issues to make allowedClients work on PPC
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
204 Fixed a bug that could cause stale non-200 repliles to be
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
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
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
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
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
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
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
333 Fix incorrect error handling when dealing with connection
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
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
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
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
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
397 27 June 2003: Polipo 0.5
399 Made the presence of a reader or writer explicit on the client
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
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
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
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
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.