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