Add the '/js/slider\.js' removal to the ChangeLog
[privoxy.git] / doc / source / changelog.sgml
1 <!--
2  File        :  $Source: /cvsroot/ijbswa/current/doc/source/changelog.sgml,v $
3
4  Purpose     :  Entity included in other project documents.
5
6  $Id: changelog.sgml,v 2.3 2013/03/02 14:40:18 fabiankeil Exp $
7
8  Copyright (C) 2013 Privoxy Developers http://www.privoxy.org/
9  See LICENSE.
10
11  ======================================================================
12   This file used for inclusion with other documents only.
13  ======================================================================
14
15  If you make changes to this file, please verify the finished
16  docs all display as intended.
17
18  This file is included into:
19
20   user-manual
21 -->
22
23 <para>
24  <application>Privoxy 3.0.21</application> stable is a bug-fix release
25  for Privoxy 3.0.20 beta. It also addresses a security issue that affects
26  all previous Privoxy versions (on some platforms). The changes since
27  3.0.20 beta are:
28 </para>
29
30 <!--
31  The SGML ChangeLog can be generated with: utils/changelog2doc.pl ChangeLog
32 -->
33 <para>
34  <itemizedlist>
35   <listitem>
36    <para>
37     Bug fixes:
38     <itemizedlist>
39     <listitem>
40      <para>
41       On POSIX-like platforms, network sockets with file descriptor
42       values above FD_SETSIZE are properly rejected. Previously they
43       could cause memory corruption in configurations that allowed
44       the limit to be reached.
45      </para>
46     </listitem>
47     <listitem>
48      <para>
49       Compiles on OS/2 again now that unistd.h is only included
50       on platforms that have it.
51      </para>
52     </listitem>
53     </itemizedlist>
54    </para>
55   </listitem>
56   <listitem>
57    <para>
58     General improvements:
59     <itemizedlist>
60     <listitem>
61      <para>
62       The show-status page shows the FEATURE_STRPTIME_SANITY_CHECKS status.
63      </para>
64     </listitem>
65     <listitem>
66      <para>
67       A couple of assert()s that could theoretically dereference
68       NULL pointers in debug builds have been relocated.
69      </para>
70     </listitem>
71     <listitem>
72      <para>
73       Added an LSB info block to the generic start script.
74       Based on a patch from Natxo Asenjo.
75      </para>
76     </listitem>
77     <listitem>
78      <para>
79       The max-client-connections default has been changed to 128
80       which should be more than enough for most setups.
81      </para>
82      </listitem>
83     </itemizedlist>
84    </para>
85   </listitem>
86   <listitem>
87    <para>
88     Action file improvements:
89     <itemizedlist>
90     <listitem>
91      <para>
92       Block rover.ebay./ar.*\&amp;adtype= instead of "/.*\&amp;adtype=" which
93       caused too man false positives.
94       Reported by u302320 in #360284, additional feedback from Adam Piggott.
95      </para>
96     </listitem>
97     <listitem>
98      <para>
99       Unblock '.advrider.com/' and '/.*ADVrider'.
100       Anonymously reported in #3603636.
101      </para>
102     </listitem>
103     <listitem>
104      <para>
105       Stop blocking '/js/slider\.js'.
106       Reported by Adam Piggott in #3606635 and _lvm in #2791160.
107      </para>
108     </listitem>
109     </itemizedlist>
110    </para>
111   </listitem>
112   <listitem>
113    <para>
114     Filter file improvements:
115     <itemizedlist>
116     <listitem>
117      <para>
118       Added an iframes filter.
119      </para>
120      </listitem>
121     </itemizedlist>
122    </para>
123   </listitem>
124   <listitem>
125    <para>
126     Documentation improvements:
127     <itemizedlist>
128     <listitem>
129      <para>
130       The whole GPLv2 text is included in the user manual now,
131       so Privoxy can serve it itself and the user can read it
132       without having to wade through GPLv3 ads first.
133      </para>
134     </listitem>
135     <listitem>
136      <para>
137       Properly numbered and underlined a couple of section titles
138       in the config that where previously overlooked due to a flaw
139       in the conversion script. Reported by Ralf Jungblut.
140      </para>
141     </listitem>
142     <listitem>
143      <para>
144       Improved the support instruction to hopefully make it harder to
145       unintentionally provide insufficient information when requesting
146       support. Previously it wasn't obvious that the information we need
147       in bug reports is usually also required in support requests.
148      </para>
149     </listitem>
150     <listitem>
151      <para>
152       Removed documentation about packages that haven't been provided
153       in years.
154      </para>
155      </listitem>
156     </itemizedlist>
157    </para>
158   </listitem>
159   <listitem>
160    <para>
161     Privoxy-Regression-Test:
162     <itemizedlist>
163     <listitem>
164      <para>
165       Only log the test number when not running in verbose mode
166       The position of the test is rarely relevant and it previously
167       wasn't exactly obvious which one of the numbers was useful to
168       repeat the test with --test-number.
169      </para>
170      </listitem>
171     </itemizedlist>
172    </para>
173   </listitem>
174   <listitem>
175    <para>
176     GNUmakefile improvements:
177     <itemizedlist>
178     <listitem>
179      <para>
180       Factor generate-config-file out of config-file to make testing
181       more convenient.
182      </para>
183     </listitem>
184     <listitem>
185      <para>
186       The clean target now also takes care of patch leftovers.
187      </para>
188      </listitem>
189     </itemizedlist>
190    </para>
191   </listitem>
192  </itemizedlist>
193 </para>
194
195 <para>
196  <application>Privoxy 3.0.20</application> beta contained the
197  following changes compared to the previous stable release:
198 </para>
199
200 <para>
201  <itemizedlist>
202     <listitem>
203    <para>
204     Bug fixes:
205     <itemizedlist>
206     <listitem>
207      <para>
208       Client sockets are now properly shutdown and drained before being
209       closed. This fixes page truncation issues with clients that aggressively
210       pipeline data on platforms that otherwise discard already written data.
211       The issue mainly affected Opera users and was initially reported
212       by Kevin in #3464439, szotsaki provided additional information to track
213       down the cause.
214      </para>
215     </listitem>
216     <listitem>
217      <para>
218       Fix latency calculation for shared connections (disabled by default).
219       It was broken since their introduction in 2009. The calculated latency
220       for most connections would be 0 in which case the timeout detection
221       failed to account for the real latency.
222      </para>
223     </listitem>
224     <listitem>
225      <para>
226       Reject URLs with invalid port. Previously they were parsed incorrectly and
227       characters between the port number and the first slash were silently
228       dropped as shown by curl test 187.
229      </para>
230     </listitem>
231     <listitem>
232      <para>
233       The default-server-timeout and socket-timeout directives accept 0 as
234       valid value.
235      </para>
236     </listitem>
237     <listitem>
238      <para>
239       Fix a race condition on Windows that could cause Privoxy to become
240       unresponsive after toggling it on or off through the taskbar icon.
241       Reported by Tim H. in #3525694.
242      </para>
243     </listitem>
244     <listitem>
245      <para>
246       Fix the compilation on Windows when configured without IPv6 support.
247      </para>
248     </listitem>
249     <listitem>
250      <para>
251       Fix an assertion that could cause debug builds to abort() in case of
252       socks5 connection failures with "debug 2" enabled.
253      </para>
254     </listitem>
255     <listitem>
256      <para>
257       Fix an assertion that could cause debug builds to abort() if a filter
258       contained nul bytes in the replacement text.
259      </para>
260      </listitem>
261     </itemizedlist>
262    </para>
263   </listitem>
264   <listitem>
265    <para>
266     General improvements:
267     <itemizedlist>
268     <listitem>
269      <para>
270       Significantly improved keep-alive support for both client and server
271       connections.
272      </para>
273     </listitem>
274     <listitem>
275      <para>
276       New debug log level 65536 which logs all actions that were applied to
277       the request.
278      </para>
279     </listitem>
280     <listitem>
281      <para>
282       New directive client-header-order to forward client headers in a
283       different order than the one in which they arrived.
284      </para>
285     </listitem>
286     <listitem>
287      <para>
288       New directive tolerate-pipelining to allow client-side pipelining.
289       If enabled (3.0.20 beta enables it by default), Privoxy will keep
290       pipelined client requests around to deal with them once the current
291       request has been served.
292      </para>
293     </listitem>
294     <listitem>
295      <para>
296       New --config-test option to let Privoxy exit after checking whether or not
297       the configuration seems valid. The limitations noted in TODO #22 and #23
298       still apply. Based on a patch by Ramkumar Chinchani.
299      </para>
300     </listitem>
301     <listitem>
302      <para>
303       New limit-cookie-lifetime{} action to let cookies expire before the end
304       of the session. Suggested by Rick Sykes in #1049575.
305      </para>
306     </listitem>
307     <listitem>
308      <para>
309       Increase the hard-coded maximum number of actions and filter files from
310       10 to 30 (each). It doesn't significantly affect Privoxy's memory usage
311       and recompiling wasn't an option for all Privoxy users that reached the
312       limit.
313      </para>
314     </listitem>
315     <listitem>
316      <para>
317       Add support for chunk-encoded client request bodies. Previously
318       chunk-encoded request bodies weren't guaranteed to be forwarded correctly,
319       so this can also be considered a bug fix although chunk-encoded request
320       bodies aren't commonly used in the real world.
321      </para>
322     </listitem>
323     <listitem>
324      <para>
325       Add support for Tor's optimistic-data SOCKS extension, which can reduce the
326       latency for requests on newly created connections. Currently only the
327       headers are sent optimistically and only if the client request has already
328       been read completely which rules out requests with large bodies.
329      </para>
330     </listitem>
331     <listitem>
332      <para>
333       After preventing the client from pipelining, don't signal keep-alive
334       intentions. When looking at the response headers alone, it previously
335       wasn't obvious from the client's perspective that no additional responses
336       should be expected.
337      </para>
338     </listitem>
339     <listitem>
340      <para>
341       Stop considering client sockets tainted after receiving a request with body.
342       It hasn't been necessary for a while now and unnecessarily causes test
343       failures when using curl's test suite.
344      </para>
345     </listitem>
346     <listitem>
347      <para>
348       Allow HTTP/1.0 clients to signal interest in keep-alive through the
349       Proxy-Connection header. While such client are rare in the real world, it
350       doesn't hurt and couple of curl tests rely on it.
351      </para>
352     </listitem>
353     <listitem>
354      <para>
355       Only remove duplicated Content-Type headers when filters are enabled.
356       If they are not it doesn't cause ill effects and the user might not want it.
357       Downgrade the removal message to LOG_LEVEL_HEADER to clarify that it's not
358       an error in Privoxy and is unlikely to cause any problems in general.
359       Anonymously reported in #3599335.
360      </para>
361     </listitem>
362     <listitem>
363      <para>
364       Set the socket option SO_LINGER for the client socket.
365      </para>
366     </listitem>
367     <listitem>
368      <para>
369       Move several variable declarations to the beginning of their code block.
370       It's required when compiling with gcc 2.95 which is still used on some
371       platforms. Initial patch submitted by Simon South in #3564815.
372      </para>
373     </listitem>
374     <listitem>
375      <para>
376       Optionally try to sanity-check strptime() results before trusting them.
377       Broken strptime() implementations have caused problems in the past and
378       the most recent offender seems to be FreeBSD's libc (standards/173421).
379      </para>
380     </listitem>
381     <listitem>
382      <para>
383       When filtering is enabled, let Range headers pass if the range starts at
384       the beginning. This should work around (or at least reduce) the video
385       playback issues with various Apple clients as reported by Duc in #3426305.
386      </para>
387     </listitem>
388     <listitem>
389      <para>
390       Do not confuse a client hanging up with a connection time out. If a client
391       closes its side of the connection without sending a request line, do not
392       send the CLIENT_CONNECTION_TIMEOUT_RESPONSE, but report the condition
393       properly.
394      </para>
395     </listitem>
396     <listitem>
397      <para>
398       Allow closing curly braces as part of action values as long as they are
399       escaped.
400      </para>
401     </listitem>
402     <listitem>
403      <para>
404       On Windows, the logfile is now written before showing the GUI error
405       message which blocks until the user acknowledges it.
406       Reported by Adriaan in #3593603.
407      </para>
408     </listitem>
409     <listitem>
410      <para>
411       Remove an unreasonable parameter limit in the CGI interface. The new
412       parameter limit depends on the memory available and is currently unlikely
413       to be reachable, due to other limits in both Privoxy and common clients.
414       Reported by Andrew on ijbswa-users@.
415      </para>
416     </listitem>
417     <listitem>
418      <para>
419       Decrease the chances of parse failures after requests with unsupported
420       methods were sent to the CGI interface.
421      </para>
422      </listitem>
423     </itemizedlist>
424    </para>
425   </listitem>
426   <listitem>
427    <para>
428     Action file improvements:
429     <itemizedlist>
430     <listitem>
431      <para>
432       Remove the comment that indicated that updated default.action versions
433       are released on their own.
434      </para>
435     </listitem>
436     <listitem>
437      <para>
438       Block 'optimize.indieclick.com/' and 'optimized-by.rubiconproject.com/'
439      </para>
440     </listitem>
441     <listitem>
442      <para>
443       Unblock 'adjamblog.wordpress.com/' and 'adjamblog.files.wordpress.com/'.
444       Reported by Ryan Farmer in #3496116.
445      </para>
446     </listitem>
447     <listitem>
448      <para>
449       Unblock '/.*Bugtracker'. Reported by pwhk in #3522341.
450      </para>
451     </listitem>
452     <listitem>
453      <para>
454       Add test URLs for '.freebsd.org' and '.watson.org'.
455      </para>
456     </listitem>
457     <listitem>
458      <para>
459       Unblock '.urbandictionary.com/popular'.
460      </para>
461     </listitem>
462     <listitem>
463      <para>
464       Block '.adnxs.com/'.
465      </para>
466     </listitem>
467     <listitem>
468      <para>
469       Block 'farm.plista.com/widgetdata.php'.
470      </para>
471     </listitem>
472     <listitem>
473      <para>
474       Block 'rotation.linuxnewmedia.com/'.
475      </para>
476     </listitem>
477     <listitem>
478      <para>
479       Block 'reklamy.sfd.pl/'. Reported by kacperdominik in #3399948.
480      </para>
481     </listitem>
482     <listitem>
483      <para>
484       Block 'g.adspeed.net/'.
485      </para>
486     </listitem>
487     <listitem>
488      <para>
489       Unblock 'websupport.wdc.com/'. Reported by Adam Piggot in #3577851.
490      </para>
491     </listitem>
492     <listitem>
493      <para>
494       Block '/openx/www/delivery/'.
495      </para>
496     </listitem>
497     <listitem>
498      <para>
499       Disable fast-redirects for '.googleapis.com/'.
500      </para>
501     </listitem>
502     <listitem>
503      <para>
504       Block 'imp.double.net/'. Reported by David Bo in #3070411.
505      </para>
506     </listitem>
507     <listitem>
508      <para>
509       Block 'gm-link.com/' which is used for email tracking.
510       Reported by David Bo in #1812733.
511      </para>
512     </listitem>
513     <listitem>
514      <para>
515       Verify that requests to "bwp." are blocked. URL taken from #1736879
516       submitted by Francois Marier.
517      </para>
518     </listitem>
519     <listitem>
520      <para>
521       Block '/.*bannerid='. Reported by Adam Piggott in #2975779.
522      </para>
523     </listitem>
524     <listitem>
525      <para>
526       Block 'cltomedia.info/delivery/' and '.adexprt.com/'.
527       Anonymously reported in #2965254.
528      </para>
529     </listitem>
530     <listitem>
531      <para>
532       Block 'de17a.com/'. Reported by David Bo in #3061472.
533      </para>
534     </listitem>
535     <listitem>
536      <para>
537       Block 'oskar.tradera.com/'. Reported by David Bo in #3060596.
538      </para>
539     </listitem>
540     <listitem>
541      <para>
542       Block '/scripts/webtrends\.js'. Reported by johnd16 in #3002729.
543      </para>
544     </listitem>
545     <listitem>
546      <para>
547       Block requests for 'pool.*.adhese.com/'. Reported by johnd16 in #3002716.
548      </para>
549     </listitem>
550     <listitem>
551      <para>
552       Update path pattern for Coremetrics and add tests.
553       Pattern and URLs submitted by Adam Piggott #3168443.
554      </para>
555     </listitem>
556     <listitem>
557      <para>
558       Enable +fast-redirects{check-decoded-url} for 'tr.anp.se/'.
559       Reported by David Bo in #3268832.
560      </para>
561     </listitem>
562     <listitem>
563      <para>
564       Unblock '.conrad.se/newsletter/banners/'. Reported by David Bo in #3413824.
565      </para>
566     </listitem>
567     <listitem>
568      <para>
569       Block '.tynt.com/'. Reported by Dan Stahlke in #3421767.
570      </para>
571     </listitem>
572     <listitem>
573      <para>
574       Unblock '.bbci.co.uk/radio/'. Reported by Adam Piggott in #3569603.
575      </para>
576     </listitem>
577     <listitem>
578      <para>
579       Block requests to 'service.maxymiser.net/'.
580       Reported by johnd16 in #3118401 (with a previous URL).
581      </para>
582     </listitem>
583     <listitem>
584      <para>
585       Disable fast-redirects for Google's "let's pretend your computer is
586       infected" page.
587      </para>
588     </listitem>
589     <listitem>
590      <para>
591       Unblock '/.*download' to resolve actionsfile feedback #3498129.
592       Submitted by Steven Kolins (soundcloud.com not working).
593      </para>
594     </listitem>
595     <listitem>
596      <para>
597       Unblock '.wlxrs.com/' which is required by hotmail.com.
598       Fixes #3413827 submitted by David Bo.
599      </para>
600     </listitem>
601     <listitem>
602      <para>
603       Add two unblock patterns for popup radio and TV players.
604       Submitted by Adam Piggott in #3596089.
605      </para>
606      </listitem>
607     </itemizedlist>
608    </para>
609   </listitem>
610   <listitem>
611    <para>
612     Filter file improvements & bug fixes:
613     <itemizedlist>
614     <listitem>
615      <para>
616       Add a referer tagger.
617      </para>
618     </listitem>
619     <listitem>
620      <para>
621       Reduce the likelihood that the google filter messes up HTML-generating
622       JavaScript. Reported by Zeno Kugy in #3520260.
623      </para>
624      </listitem>
625     </itemizedlist>
626    </para>
627   </listitem>
628   <listitem>
629    <para>
630     Documentation improvements:
631     <itemizedlist>
632     <listitem>
633      <para>
634       Revised all OS X sections due to new packaging module (OSXPackageBuilder).
635      </para>
636     </listitem>
637     <listitem>
638      <para>
639       Update the list of supported operating systems to clarify that all Windows
640       versions after 95 are expected to work and note that the platform-specific
641       code for AmigaOS and QNX currently isn't maintained.
642      </para>
643     </listitem>
644     <listitem>
645      <para>
646       Update 'Signals' section, the only explicitly handled signals are SIGINT,
647       SIGTERM and SIGHUP.
648      </para>
649     </listitem>
650     <listitem>
651      <para>
652       Add Haiku to the list of operating systems on which Privoxy is known to
653       run.
654      </para>
655     </listitem>
656     <listitem>
657      <para>
658       Add DragonFly to the list of BSDs on which Privoxy is known to run.
659      </para>
660     </listitem>
661     <listitem>
662      <para>
663       Removed references to redhat-specific documentation set since it no longer
664       exists.
665      </para>
666     </listitem>
667     <listitem>
668      <para>
669       Removed references to building PDFs since we no longer do so.
670      </para>
671     </listitem>
672     <listitem>
673      <para>
674       Multiple listen-address directives are supported since 3.0.18, correct the
675       documentation to say so.
676      </para>
677     </listitem>
678     <listitem>
679      <para>
680       Remove bogus section about long and short being preferable to int.
681      </para>
682     </listitem>
683     <listitem>
684      <para>
685       Corrected some Internet JunkBuster references to Privoxy.
686      </para>
687     </listitem>
688     <listitem>
689      <para>
690       Removed references to www.junkbusters.com since it is no longer
691       maintained. Reported by Angelina Matson.
692      </para>
693     </listitem>
694     <listitem>
695      <para>
696       Various grammar and spelling corrections
697      </para>
698     </listitem>
699     <listitem>
700      <para>
701       Add a client-header-tagger{} example for disabling filtering for range
702       requests.
703      </para>
704     </listitem>
705     <listitem>
706      <para>
707       Correct a URL in the "Privoxy with Tor" FAQ.
708      </para>
709     </listitem>
710     <listitem>
711      <para>
712       Spell 'refresh-tags' correctly. Reported by Don in #3571927.
713      </para>
714     </listitem>
715     <listitem>
716      <para>
717       Sort manpage options alphabetically.
718      </para>
719     </listitem>
720     <listitem>
721      <para>
722       Remove an incorrect sentence in the toggle section. The toggle state
723       doesn't affect whether or not the Windows version uses the tray icon.
724       Reported by Zeno Kugy in #3596395.
725      </para>
726     </listitem>
727     <listitem>
728      <para>
729       Add new contributors since 3.0.19.
730      </para>
731      </listitem>
732     </itemizedlist>
733    </para>
734   </listitem>
735   <listitem>
736    <para>
737     Log message improvements:
738     <itemizedlist>
739     <listitem>
740      <para>
741       When stopping to watch a client socket due to pipelining, additionally log
742       the socket number.
743      </para>
744     </listitem>
745     <listitem>
746      <para>
747       Log the client socket and its condition before closing it. This makes it
748       more obvious that the socket actually gets closed and should help when
749       diagnosing problems like #3464439.
750      </para>
751     </listitem>
752     <listitem>
753      <para>
754       In case of SOCKS5 failures, do not explicitly log the server's response.
755       It hasn't helped so far and the response can already be logged by enabling
756       "debug 32768" anyway. This reverts v1.81 and the follow-up bug fix v1.84.
757      </para>
758     </listitem>
759     <listitem>
760      <para>
761       Relocate the connection-accepted message from listen_loop() to serve().
762       This way it's printed by the thread that is actually serving the
763       connection which is nice when grepping for thread ids in log files.
764      </para>
765      </listitem>
766     </itemizedlist>
767    </para>
768   </listitem>
769   <listitem>
770    <para>
771     Code cleanups:
772     <itemizedlist>
773     <listitem>
774      <para>
775       Remove compatibility layer for versions prior to 3.0 since it has been
776       obsolete for more than 10 years now.
777      </para>
778     </listitem>
779     <listitem>
780      <para>
781       Remove the ijb_isupper() and ijb_tolower() macros from parsers.c since
782       they aren't used in this file.
783      </para>
784     </listitem>
785     <listitem>
786      <para>
787       Removed the 'Functions declared include:' comment sections since they tend
788       to be incomplete, incorrect and out of date and the benefit seems
789       questionable.
790      </para>
791     </listitem>
792     <listitem>
793      <para>
794       Various comment grammar and comprehensibility improvements.
795      </para>
796     </listitem>
797     <listitem>
798      <para>
799       Remove a pointless fflush() call in chat(). Flushing all streams pretty
800       much all the time for no obvious reason is ridiculous.
801      </para>
802     </listitem>
803     <listitem>
804      <para>
805       Relocate ijb_isupper()'s definition to project.h and get the ijb_tolower()
806       definition from there, too.
807      </para>
808     </listitem>
809     <listitem>
810      <para>
811       Relocate ijb_isdigit()'s definition to project.h.
812      </para>
813     </listitem>
814     <listitem>
815      <para>
816       Rename ijb_foo macros to privoxy_foo.
817      </para>
818     </listitem>
819     <listitem>
820      <para>
821       Add malloc_or_die() which will allow to simplify code paths where malloc()
822       failures don't need to be handled gracefully.
823      </para>
824     </listitem>
825     <listitem>
826      <para>
827       Add strdup_or_die() which will allow to simplify code paths where strdup()
828       failures don't need to be handled gracefully.
829      </para>
830     </listitem>
831     <listitem>
832      <para>
833       Replace strdup() calls with strdup_or_die() calls where it's safe and
834       simplifies the code.
835      </para>
836     </listitem>
837     <listitem>
838      <para>
839       Fix white-space around parentheses.
840      </para>
841     </listitem>
842     <listitem>
843      <para>
844       Add missing white-space behind if's and the following parentheses.
845      </para>
846     </listitem>
847     <listitem>
848      <para>
849       Unwrap a memcpy() call in resolve_hostname_to_ip().
850      </para>
851     </listitem>
852     <listitem>
853      <para>
854       Declare pcrs_get_delimiter()'s delimiters[] static const.
855      </para>
856     </listitem>
857     <listitem>
858      <para>
859       Various optimisations to remove dead code and merge inefficient code
860       structures for improved clarity, performance or code compactness.
861      </para>
862     </listitem>
863     <listitem>
864      <para>
865       Various data type corrections.
866      </para>
867     </listitem>
868     <listitem>
869      <para>
870       Change visibility of several code segments when compiling without
871       FEATURE_CONNECTION_KEEP_ALIVE enabled for clarity.
872      </para>
873     </listitem>
874     <listitem>
875      <para>
876       In pcrs_get_delimiter(), do not use delimiters outside the ASCII range.
877       Fixes a clang complaint.
878      </para>
879     </listitem>
880     <listitem>
881      <para>
882       Fix an error message in get_last_url() nobody is supposed to see.
883       Reported by Matthew Fischer in #3507301.
884      </para>
885     </listitem>
886     <listitem>
887      <para>
888       Fix a typo in the no-zlib-support complaint. Patch submitted by Matthew
889       Fischer in #3507304.
890      </para>
891     </listitem>
892     <listitem>
893      <para>
894       Shorten ssplit()'s prototype by removing the last two arguments. We always
895       want to skip empty fields and ignore leading delimiters, so having
896       parameters for this only complicates the API.
897      </para>
898     </listitem>
899     <listitem>
900      <para>
901       Use an enum for the type of the action value.
902      </para>
903     </listitem>
904     <listitem>
905      <para>
906       Rename action_name's member takes_value to value_type as it isn't used as
907       boolean.
908      </para>
909     </listitem>
910     <listitem>
911      <para>
912       Turn family mismatches in match_sockaddr() into fatal errors.
913      </para>
914     </listitem>
915     <listitem>
916      <para>
917       Let enlist_unique_header() verify that the caller didn't pass a header
918       containing either \r or \n.
919      </para>
920     </listitem>
921     <listitem>
922      <para>
923       Change the hashes used in load_config() to unsigned int. That's what
924       hash_string() actually returns and using a potentially larger type
925       is at best useless.
926      </para>
927     </listitem>
928     <listitem>
929      <para>
930       Use privoxy_tolower() instead of vanilla tolower() with manual casting of
931       the argument.
932      </para>
933     </listitem>
934     <listitem>
935      <para>
936       Catch ssplit() failures in parse_cgi_parameters().
937      </para>
938      </listitem>
939     </itemizedlist>
940    </para>
941   </listitem>
942   <listitem>
943    <para>
944     Privoxy-Regression-Test:
945     <itemizedlist>
946     <listitem>
947      <para>
948       Add an 'Overwrite condition' directive to skip any matching tests before
949       it. As it has a global scope, using it is more convenient than clowning
950       around with the Ignore directive.
951      </para>
952     </listitem>
953     <listitem>
954      <para>
955       Log to STDOUT instead of STDERR.
956      </para>
957     </listitem>
958     <listitem>
959      <para>
960       Include the Privoxy version in the output.
961      </para>
962     </listitem>
963     <listitem>
964      <para>
965       Various grammar and spelling corrections in documentation and code.
966      </para>
967     </listitem>
968     <listitem>
969      <para>
970       Additional tests for range requests with filtering enabled.
971      </para>
972     </listitem>
973     <listitem>
974      <para>
975       Tests with mostly invalid range request.
976      </para>
977     </listitem>
978     <listitem>
979      <para>
980       Add a couple of hide-if-modified-since{} tests with different date formats.
981      </para>
982     </listitem>
983     <listitem>
984      <para>
985       Cleaned up the format of the regression-tests.action file to match the
986       format of default.action.
987      </para>
988     </listitem>
989     <listitem>
990      <para>
991       Remove the "Copyright" line from print_version(). When using --help, every
992       line of screen space matters and thus shouldn't be wasted on things the
993       user doesn't care about.
994      </para>
995      </listitem>
996     </itemizedlist>
997    </para>
998   </listitem>
999   <listitem>
1000    <para>
1001     Privoxy-Log-Parser:
1002     <itemizedlist>
1003     <listitem>
1004      <para>
1005       Improve the --statistics performance by skipping sanity checks for input
1006       that shouldn't affect the results anyway. Add a --strict-checks option
1007       that enables some of the checks again, just in case anybody cares.
1008      </para>
1009     </listitem>
1010     <listitem>
1011      <para>
1012       The distribution of client requests per connection is included in
1013       the --statistic output.
1014      </para>
1015     </listitem>
1016     <listitem>
1017      <para>
1018       The --accept-unknown-messages option has been removed and the behavior
1019       is now the default.
1020      </para>
1021     </listitem>
1022     <listitem>
1023      <para>
1024       Accept and (mostly) highlight new log messages introduced with
1025       Privoxy 3.0.20.
1026      </para>
1027      </listitem>
1028     </itemizedlist>
1029    </para>
1030   </listitem>
1031   <listitem>
1032    <para>
1033     uagen:
1034     <itemizedlist>
1035     <listitem>
1036      <para>
1037       Bump generated Firefox version to 17.
1038      </para>
1039      </listitem>
1040     </itemizedlist>
1041    </para>
1042   </listitem>
1043   <listitem>
1044    <para>
1045     GNUmakefile improvements:
1046     <itemizedlist>
1047     <listitem>
1048      <para>
1049       The dok-tidy target no longer taints documents with a tidy-mark
1050      </para>
1051     </listitem>
1052     <listitem>
1053      <para>
1054       Change RA_MODE from 0664 to 0644. Suggested by Markus Dittrich in
1055       #3505445.
1056      </para>
1057     </listitem>
1058     <listitem>
1059      <para>
1060       Remove tidy's clean flag as it changes the scope of attributes.
1061       Link-specific colors end up being applied to all text. Reported by Adam
1062       Piggott in #3569551.
1063      </para>
1064     </listitem>
1065     <listitem>
1066      <para>
1067       Leave it up to the user whether or not smart tags are inserted.
1068      </para>
1069     </listitem>
1070     <listitem>
1071      <para>
1072       Let w3m itself do the line wrapping for the config file. It works better
1073       than fmt as it can honour pre tags causing less unintentional line breaks.
1074      </para>
1075     </listitem>
1076     <listitem>
1077      <para>
1078       Ditch a pointless '-r' passed to rm to delete files.
1079      </para>
1080     </listitem>
1081     <listitem>
1082      <para>
1083       The config-file target now requires less manual intervention and updates
1084       the original config.
1085      </para>
1086     </listitem>
1087     <listitem>
1088      <para>
1089       Change WDUMP to generate ASCII. Add WDUMP_UTF8 to allow UTF-8 in the
1090       AUTHORS file so the names are right.
1091      </para>
1092     </listitem>
1093     <listitem>
1094      <para>
1095       Stop pretending that lynx and links are supported for the documentation.
1096      </para>
1097      </listitem>
1098     </itemizedlist>
1099    </para>
1100   </listitem>
1101   <listitem>
1102    <para>
1103     configure improvements:
1104     <itemizedlist>
1105     <listitem>
1106      <para>
1107       On Haiku, do not pass -lpthread to the compiler. Haiku's pthreads
1108       implementation is contained in its system library, libroot, so no
1109       additional library needs to be searched.
1110       Patch submitted by Simon South in #3564815.
1111      </para>
1112     </listitem>
1113     <listitem>
1114      <para>
1115       Additional Haiku-specific improvements. Disable checks intended for
1116       multi-user systems as Haiku is presently single-user. Group Haiku-specific
1117       settings in their own section, following the pattern for Solaris, OS/2 and
1118       AmigaOS. Add additional library-related settings to remove the need for
1119       providing configure with custom LDFLAGS.
1120       Submitted by Simon South in #3574538.
1121      </para>
1122      </listitem>
1123     </itemizedlist>
1124    </para>
1125   </listitem>
1126  </itemizedlist>
1127 </para>