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