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