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