Rebuild documentation for the new config directives in 3.0.20
[privoxy.git] / doc / webserver / user-manual / whatsnew.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
3
4 <html>
5 <head>
6   <title>What's New in this Release</title>
7   <meta name="GENERATOR" content=
8   "Modular DocBook HTML Stylesheet Version 1.79">
9   <link rel="HOME" title="Privoxy 3.0.20 User Manual" href="index.html">
10   <link rel="PREVIOUS" title="Installation" href="installation.html">
11   <link rel="NEXT" title="Quickstart to Using Privoxy" href=
12   "quickstart.html">
13   <link rel="STYLESHEET" type="text/css" href="../p_doc.css">
14   <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
15   <link rel="STYLESHEET" type="text/css" href="p_doc.css">
16 </head>
17
18 <body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
19 "#840084" alink="#0000FF">
20   <div class="NAVHEADER">
21     <table summary="Header navigation table" width="100%" border="0"
22     cellpadding="0" cellspacing="0">
23       <tr>
24         <th colspan="3" align="center">Privoxy 3.0.20 User Manual</th>
25       </tr>
26
27       <tr>
28         <td width="10%" align="left" valign="bottom"><a href=
29         "installation.html" accesskey="P">Prev</a></td>
30
31         <td width="80%" align="center" valign="bottom"></td>
32
33         <td width="10%" align="right" valign="bottom"><a href=
34         "quickstart.html" accesskey="N">Next</a></td>
35       </tr>
36     </table>
37     <hr align="left" width="100%">
38   </div>
39
40   <div class="SECT1">
41     <h1 class="SECT1"><a name="WHATSNEW" id="WHATSNEW">3. What's New in this
42     Release</a></h1>
43
44     <p><span class="APPLICATION">Privoxy 3.0.19</span> is a stable release.
45     The changes since 3.0.18 stable are:</p>
46
47     <ul>
48       <li>
49         <p>Bug fixes:</p>
50
51         <ul>
52           <li>
53             <p>Prevent a segmentation fault when de-chunking buffered
54             content. It could be triggered by malicious web servers if
55             Privoxy was configured to filter the content and running on a
56             platform where SIZE_T_MAX isn't larger than UINT_MAX, which
57             probably includes most 32-bit systems. On those platforms, all
58             Privoxy versions before 3.0.19 appear to be affected. To be on
59             the safe side, this bug should be presumed to allow code
60             execution as proving that it doesn't seems unrealistic.</p>
61           </li>
62
63           <li>
64             <p>Do not expect a response from the SOCKS4/4A server until it
65             got something to respond to. This regression was introduced in
66             3.0.18 and prevented the SOCKS4/4A negotiation from working.
67             Reported by qqqqqw in #3459781.</p>
68           </li>
69         </ul>
70       </li>
71
72       <li>
73         <p>General improvements:</p>
74
75         <ul>
76           <li>
77             <p>Fix an off-by-one in an error message about connect
78             failures.</p>
79           </li>
80
81           <li>
82             <p>Use a GNUMakefile variable for the webserver root directory
83             and update the path. Sourceforge changed it which broke various
84             web-related targets.</p>
85           </li>
86
87           <li>
88             <p>Update the CODE_STATUS description.</p>
89           </li>
90         </ul>
91       </li>
92     </ul>
93
94     <p>The following changes were made between 3.0.17 and 3.0.18:</p>
95
96     <ul>
97       <li>
98         <p>Bug fixes:</p>
99
100         <ul>
101           <li>
102             <p>If a generated redirect URL contains characters RFC 3986
103             doesn't permit, they are (re)encoded. Not doing this makes
104             Privoxy versions from 3.0.5 to 3.0.17 susceptible to HTTP
105             response splitting (CWE-113) attacks if the
106             +fast-redirects{check-decoded-url} action is used.</p>
107           </li>
108
109           <li>
110             <p>Fix a logic bug that could cause Privoxy to reuse a server
111             socket after it got tainted by a server-header-tagger-induced
112             block that was triggered before the whole server response had
113             been read. If keep-alive was enabled and the request following
114             the blocked one was to the same host and using the same
115             forwarding settings, Privoxy would send it on the tainted server
116             socket. While the server would simply treat it as a pipelined
117             request, Privoxy would later on fail to properly parse the
118             server's response as it would try to parse the unread data from
119             the first response as server headers for the second one.
120             Regression introduced in 3.0.17.</p>
121           </li>
122
123           <li>
124             <p>When implying keep-alive in client_connection(), remember that
125             the client didn't. Fixes a regression introduced in 3.0.13 that
126             would cause Privoxy to wait for additional client requests after
127             receiving a HTTP/1.1 request with "Connection: close" set and
128             connection sharing enabled. With clients which terminates the
129             client connection after detecting that the whole body has been
130             received it doesn't really matter, but with clients that don't
131             the connection would be kept open until it timed out.</p>
132           </li>
133
134           <li>
135             <p>Fix a subtle race condition between
136             prepare_csp_for_next_request() and sweep(). A thread preparing
137             itself for the next client request could briefly appear to be
138             inactive. If all other threads were already using more recent
139             files, the thread could get its files swept away under its feet.
140             So far this has only been reproduced while stress testing in
141             valgrind while touching action files in a loop. It's unlikely to
142             have caused any actual problems in the real world.</p>
143           </li>
144
145           <li>
146             <p>Disable filters if SDCH compression is used unless filtering
147             is forced. If SDCH was combined with a supported compression
148             algorithm, Privoxy previously could try to decompress it and
149             ditch the Content-Encoding header even though the SDCH
150             compression wasn't dealt with. Reported by zebul666 in
151             #3225863.</p>
152           </li>
153
154           <li>
155             <p>Make a copy of the --user value and only mess with that when
156             splitting user and group. On some operating systems modifying the
157             value directly is reflected in the output of ps and friends and
158             can be misleading. Reported by zepard in #3292710.</p>
159           </li>
160
161           <li>
162             <p>If forwarded-connect-retries is set, only retry if Privoxy is
163             actually forwarding the request. Previously direct connections
164             would be retried as well.</p>
165           </li>
166
167           <li>
168             <p>Fixed a small memory leak when retrying connections with IPv6
169             support enabled.</p>
170           </li>
171
172           <li>
173             <p>Remove an incorrect assertion in
174             compile_dynamic_pcrs_job_list() It could be triggered by a pcrs
175             job with an invalid pcre pattern (for example one that contains a
176             lone quantifier).</p>
177           </li>
178
179           <li>
180             <p>If the --user argument user[.group] contains a dot, always
181             bail out if no group has been specified. Previously the intended,
182             but undocumented (and apparently untested), behaviour was to try
183             interpreting the whole argument as user name, but the detection
184             was flawed and checked for '0' instead of '\0', thus merely
185             preventing group names beginning with a zero.</p>
186           </li>
187
188           <li>
189             <p>In html_code_map[], use a numeric character reference instead
190             of ' which wasn't standardized before XHTML 1.0.</p>
191           </li>
192
193           <li>
194             <p>Fix an invalid free when compiled with
195             FEATURE_GRACEFUL_TERMINATION and shut down through
196             http://config.privoxy.org/die</p>
197           </li>
198
199           <li>
200             <p>In get_actions(), fix the "temporary" backwards compatibility
201             hack to accept block actions without reason. It also covered
202             other actions that should be rejected as invalid. Reported by
203             Billy Crook.</p>
204           </li>
205         </ul>
206       </li>
207
208       <li>
209         <p>General improvements:</p>
210
211         <ul>
212           <li>
213             <p>Privoxy can (re)compress buffered content before delivering it
214             to the client. Disabled by default as most users wouldn't benefit
215             from it.</p>
216           </li>
217
218           <li>
219             <p>The +fast-redirects{check-decoded-url} action checks URL
220             segments separately. If there are other parameters behind the
221             redirect URL, this makes it unnecessary to cut them off by
222             additionally using a +redirect{} pcrs command. Initial patch
223             submitted by Jamie Zawinski in #3429848.</p>
224           </li>
225
226           <li>
227             <p>When loading action sections, verify that the referenced
228             filters exist. Currently missing filters only result in an error
229             message, but eventually the severity will be upgraded to
230             fatal.</p>
231           </li>
232
233           <li>
234             <p>Allow to bind to multiple separate addresses. Patch set
235             submitted by Petr Pisar in #3354485.</p>
236           </li>
237
238           <li>
239             <p>Set socket_error to errno if connecting fails in
240             rfc2553_connect_to(). Previously rejected direct connections
241             could be incorrectly reported as DNS issues if Privoxy was
242             compiled with IPv6 support.</p>
243           </li>
244
245           <li>
246             <p>Adjust url_code_map[] so spaces are replaced with %20 instead
247             of '+' While '+' can be used by client's submitting form data,
248             this is not actually what Privoxy is using the lookups for. This
249             is more of a cosmetic issue and doesn't fix any known
250             problems.</p>
251           </li>
252
253           <li>
254             <p>When compiled without FEATURE_FAST_REDIRECTS, do not silently
255             ignore +fast-redirect{} directives</p>
256           </li>
257
258           <li>
259             <p>Added a workaround for GNU libc's strptime() reporting
260             negative year values when the parsed year is only specified with
261             two digits. On affected systems cookies with such a date would
262             not be turned into session cookies by the +session-cookies-only
263             action. Reported by Vaeinoe in #3403560</p>
264           </li>
265
266           <li>
267             <p>Fixed bind failures with certain GNU libc versions if no
268             non-loopback IP address has been configured on the system. This
269             is mainly an issue if the system is using DHCP and Privoxy is
270             started before the network is completely configured. Reported by
271             Raphael Marichez in #3349356. Additional insight from Petr
272             Pisar.</p>
273           </li>
274
275           <li>
276             <p>Privoxy log messages now use the ISO 8601 date format
277             %Y-%m-%d. It's only slightly longer than the old format, but
278             contains the full date including the year and allows sorting by
279             date (when grepping in multiple log files) without hassle.</p>
280           </li>
281
282           <li>
283             <p>In get_last_url(), do not bother trying to decode URLs that do
284             not contain at least one '%' sign. It reduces the log noise and a
285             number of unnecessary memory allocations.</p>
286           </li>
287
288           <li>
289             <p>In case of SOCKS5 failures, dump the socks response in the log
290             message.</p>
291           </li>
292
293           <li>
294             <p>Simplify the signal setup in main().</p>
295           </li>
296
297           <li>
298             <p>Streamline socks5_connect() slightly.</p>
299           </li>
300
301           <li>
302             <p>In socks5_connect(), require a complete socks response from
303             the server. Previously Privoxy didn't care how much data the
304             server response contained as long as the first two bytes
305             contained the expected values. While at it, shrink the buffer
306             size so Privoxy can't read more than a whole socks response.</p>
307           </li>
308
309           <li>
310             <p>In chat(), do not bother to generate a client request in case
311             of direct CONNECT requests. It will not be used anyway.</p>
312           </li>
313
314           <li>
315             <p>Reduce server_last_modified()'s stack size.</p>
316           </li>
317
318           <li>
319             <p>Shorten get_http_time() by using strftime().</p>
320           </li>
321
322           <li>
323             <p>Constify the known_http_methods pointers in
324             unknown_method().</p>
325           </li>
326
327           <li>
328             <p>Constify the time_formats pointers in parse_header_time().</p>
329           </li>
330
331           <li>
332             <p>Constify the formerly_valid_actions pointers in
333             action_used_to_be_valid().</p>
334           </li>
335
336           <li>
337             <p>Introduce a GNUMakefile MAN_PAGE variable that defaults to
338             privoxy.1. The Debian package uses section 8 for the man page and
339             this should simplify the patch.</p>
340           </li>
341
342           <li>
343             <p>Deduplicate the INADDR_NONE definition for Solaris by moving
344             it to jbsockets.h</p>
345           </li>
346
347           <li>
348             <p>In block_url(), ditch the obsolete workaround for ancient
349             Netscape versions that supposedly couldn't properly deal with
350             status code 403.</p>
351           </li>
352
353           <li>
354             <p>Remove a useless NULL pointer check in load_trustfile().</p>
355           </li>
356
357           <li>
358             <p>Remove two useless NULL pointer checks in
359             load_one_re_filterfile().</p>
360           </li>
361
362           <li>
363             <p>Change url_code_map[] from an array of pointers to an array of
364             arrays It removes an unnecessary layer of indirection and on
365             64bit system reduces the size of the binary a bit.</p>
366           </li>
367
368           <li>
369             <p>Fix various typos. Fixes taken from Debian's 29_typos.dpatch
370             by Roland Rosenfeld.</p>
371           </li>
372
373           <li>
374             <p>Add a dok-tidy GNUMakefile target to clean up the messy HTML
375             generated by the other dok targets.</p>
376           </li>
377
378           <li>
379             <p>GNUisms in the GNUMakefile have been removed.</p>
380           </li>
381
382           <li>
383             <p>Change the HTTP version in static responses to 1.1</p>
384           </li>
385
386           <li>
387             <p>Synced config.sub and config.guess with upstream
388             2011-11-11/386c7218162c145f5f9e1ff7f558a3fbb66c37c5.</p>
389           </li>
390
391           <li>
392             <p>Add a dedicated function to parse the values of toggles.
393             Reduces duplicated code in load_config() and provides better
394             error handling. Invalid or missing toggle values are now a fatal
395             error instead of being silently ignored.</p>
396           </li>
397
398           <li>
399             <p>Terminate HTML lines in static error messages with \n instead
400             of \r\n.</p>
401           </li>
402
403           <li>
404             <p>Simplify cgi_error_unknown() a bit.</p>
405           </li>
406
407           <li>
408             <p>In LogPutString(), don't bother looking at pszText when not
409             actually logging anything.</p>
410           </li>
411
412           <li>
413             <p>Change ssplit()'s fourth parameter from int to size_t. Fixes a
414             clang complaint.</p>
415           </li>
416
417           <li>
418             <p>Add a warning that the statistics currently can't be trusted.
419             Mention Privoxy-Log-Parser's --statistics option as an
420             alternative for the time being.</p>
421           </li>
422
423           <li>
424             <p>In rfc2553_connect_to(), start setting cgi-&gt;error_message
425             on error.</p>
426           </li>
427
428           <li>
429             <p>Change the expected status code returned for http://p.p/die
430             depending on whether or not FEATURE_GRACEFUL_TERMINATION is
431             available.</p>
432           </li>
433
434           <li>
435             <p>In cgi_die(), mark the client connection for closing. If the
436             client will fetch the style sheet through another connection it
437             gets the main thread out of the accept() state and should thus
438             trigger the actual shutdown.</p>
439           </li>
440
441           <li>
442             <p>Add a proper CGI message for cgi_die().</p>
443           </li>
444
445           <li>
446             <p>Don't enforce a logical line length limit in
447             read_config_line().</p>
448           </li>
449
450           <li>
451             <p>Slightly refactor server_last_modified() to remove useless
452             gmtime*() calls.</p>
453           </li>
454
455           <li>
456             <p>In get_content_type(), also recognize '.jpeg' as JPEG
457             extension.</p>
458           </li>
459
460           <li>
461             <p>Add '.png' to the list of recognized file extensions in
462             get_content_type().</p>
463           </li>
464
465           <li>
466             <p>In block_url(), consistently use the block reason "Request
467             blocked by Privoxy" In two places the reason was "Request for
468             blocked URL" which hides the fact that the request got blocked by
469             Privoxy and isn't necessarily correct as the block may be due to
470             tags.</p>
471           </li>
472
473           <li>
474             <p>In listen_loop(), reload the configuration files after
475             accepting a new connection instead of before. Previously the
476             first connection that arrived after a configuration change would
477             still be handled with the old configuration.</p>
478           </li>
479
480           <li>
481             <p>In chat()'s receive-data loop, skip a client socket check if
482             the socket will be written to right away anyway. This can
483             increase the transfer speed for unfiltered content on fast
484             network connections.</p>
485           </li>
486
487           <li>
488             <p>The socket timeout is used for SOCKS negotiations as well
489             which previously couldn't timeout.</p>
490           </li>
491
492           <li>
493             <p>Don't keep the client connection alive if any configuration
494             file changed since the time the connection came in. This is
495             closer to Privoxy's behaviour before keep-alive support for
496             client connection has been added and also less confusing in
497             general.</p>
498           </li>
499
500           <li>
501             <p>Treat all Content-Type header values containing the pattern
502             'script' as a sign of text. Reported by pribog in #3134970.</p>
503           </li>
504         </ul>
505       </li>
506
507       <li>
508         <p>Action file improvements:</p>
509
510         <ul>
511           <li>
512             <p>Moved the site-specific block pattern section below the one
513             for the generic patterns so for requests that are matched in
514             both, the block reason for the domain is shown which is usually
515             more useful than showing the one for the generic pattern.</p>
516           </li>
517
518           <li>
519             <p>Remove -prevent-compression from the fragile alias. It's no
520             longer used anywhere by default and isn't known to break stuff
521             anyway.</p>
522           </li>
523
524           <li>
525             <p>Add a (disabled) section to block various Facebook tracking
526             URLs. Reported by Dan Stahlke in #3421764.</p>
527           </li>
528
529           <li>
530             <p>Add a (disabled) section to rewrite and redirect
531             click-tracking URLs used on news.google.com. Reported by Dan
532             Stahlke in #3421755.</p>
533           </li>
534
535           <li>
536             <p>Unblock linuxcounter.net/. Reported by Dan Stahlke in
537             #3422612.</p>
538           </li>
539
540           <li>
541             <p>Block 'www91.intel.com/' which is used by Omniture. Reported
542             by Adam Piggott in #3167370.</p>
543           </li>
544
545           <li>
546             <p>Disable the handle-as-empty-doc-returns-ok option and mark it
547             as deprecated. Reminded by tceverling in #2790091.</p>
548           </li>
549
550           <li>
551             <p>Add ".ivwbox.de/" to the "Cross-site user tracking" section.
552             Reported by Nettozahler in #3172525.</p>
553           </li>
554
555           <li>
556             <p>Unblock and fast-redirect ".awin1.com/.*=http://". Reported by
557             Adam Piggott in #3170921.</p>
558           </li>
559
560           <li>
561             <p>Block "b.collective-media.net/".</p>
562           </li>
563
564           <li>
565             <p>Widen the Debian popcon exception to "qa.debian.org/popcon".
566             Seen in Debian's 05_default_action.dpatch by Roland
567             Rosenfeld.</p>
568           </li>
569
570           <li>
571             <p>Block ".gemius.pl/" which only seems to be used for user
572             tracking. Reported by johnd16 in #3002731. Additional input from
573             Lee and movax.</p>
574           </li>
575
576           <li>
577             <p>Disable banners-by-size filters for '.thinkgeek.com/'. The
578             filter only seems to catch pictures of the inventory.</p>
579           </li>
580
581           <li>
582             <p>Block requests for 'go.idmnet.bbelements.com/please/showit/'.
583             Reported by kacperdominik in #3372959.</p>
584           </li>
585
586           <li>
587             <p>Unblock adainitiative.org/.</p>
588           </li>
589
590           <li>
591             <p>Add a fast-redirects exception for
592             '.googleusercontent.com/.*=cache'.</p>
593           </li>
594
595           <li>
596             <p>Add a fast-redirects exception for
597             webcache.googleusercontent.com/.</p>
598           </li>
599
600           <li>
601             <p>Unblock http://adassier.wordpress.com/ and
602             http://adassier.files.wordpress.com/.</p>
603           </li>
604         </ul>
605       </li>
606
607       <li>
608         <p>Filter file improvements:</p>
609
610         <ul>
611           <li>
612             <p>Let the yahoo filter hide '.ads'.</p>
613           </li>
614
615           <li>
616             <p>Let the msn filter hide overlay ads for Facebook 'likes' in
617             search results and elements with the id 's_notf_div'. They only
618             seem to be used to advertise site 'enhancements'.</p>
619           </li>
620
621           <li>
622             <p>Let the js-events filter additionally disarm setInterval().
623             Suggested by dg1727 in #3423775.</p>
624           </li>
625         </ul>
626       </li>
627
628       <li>
629         <p>Documentation improvements:</p>
630
631         <ul>
632           <li>
633             <p>Clarify the effect of compiling Privoxy with zlib support.
634             Suggested by dg1727 in #3423782.</p>
635           </li>
636
637           <li>
638             <p>Point out that the SourceForge messaging system works like a
639             black hole and should thus not be used to contact individual
640             developers.</p>
641           </li>
642
643           <li>
644             <p>Mention some of the problems one can experience when not
645             explicitly configuring an IP addresses as listen address.</p>
646           </li>
647
648           <li>
649             <p>Explicitly mention that hostnames can be used instead of IP
650             addresses for the listen-address, that only the first address
651             returned will be used and what happens if the address is invalid.
652             Requested by Calestyo in #3302213.</p>
653           </li>
654         </ul>
655       </li>
656
657       <li>
658         <p>Log message improvements:</p>
659
660         <ul>
661           <li>
662             <p>If only the server connection is kept alive, do not pretend to
663             wait for a new client request.</p>
664           </li>
665
666           <li>
667             <p>Remove a superfluous log message in forget_connection().</p>
668           </li>
669
670           <li>
671             <p>In chat(), properly report missing server responses as such
672             instead of calling them empty.</p>
673           </li>
674
675           <li>
676             <p>In forwarded_connect(), fix a log message nobody should ever
677             see.</p>
678           </li>
679
680           <li>
681             <p>Fix a log message in socks5_connect(), a failed write
682             operation was logged as failed read operation.</p>
683           </li>
684
685           <li>
686             <p>Let load_one_actions_file() properly complain about a missing
687             '{' at the beginning of the file. Simply stating that a line is
688             invalid isn't particularly helpful.</p>
689           </li>
690
691           <li>
692             <p>Do not claim to listen on a socket until Privoxy actually
693             does. Patch submitted by Petr Pisar #3354485</p>
694           </li>
695
696           <li>
697             <p>Prevent a duplicated LOG_LEVEL_CLF message when sending out
698             the "no-server-data" response.</p>
699           </li>
700
701           <li>
702             <p>Also log the client socket when dropping a connection.</p>
703           </li>
704
705           <li>
706             <p>Include the destination host in the 'Request ... marked for
707             blocking. limit-connect{...} doesn't allow CONNECT ...' message
708             Patch submitted by Saperski in #3296250.</p>
709           </li>
710
711           <li>
712             <p>Prevent a duplicated log message if none of the resolved IP
713             addresses were reachable.</p>
714           </li>
715
716           <li>
717             <p>In connect_to(), do not pretend to retry if
718             forwarded-connect-retries is zero or unset.</p>
719           </li>
720
721           <li>
722             <p>When a specified user or group can't be found, put the name in
723             single-quotes when logging it.</p>
724           </li>
725
726           <li>
727             <p>In rfc2553_connect_to(), explain getnameinfo() errors
728             better.</p>
729           </li>
730
731           <li>
732             <p>Remove a useless log message in chat().</p>
733           </li>
734
735           <li>
736             <p>When retrying to connect, also log the maximum number of
737             connection attempts.</p>
738           </li>
739
740           <li>
741             <p>Rephrase a log message in compile_dynamic_pcrs_job_list().
742             Divide the error code and its meaning with a colon. Call the pcrs
743             job dynamic and not the filter. Filters may contain dynamic and
744             non-dynamic pcrs jobs at the same time. Only mention the name of
745             the filter or tagger, but don't claim it's a filter when it could
746             be a tagger.</p>
747           </li>
748
749           <li>
750             <p>In a fatal error message in load_one_actions_file(), cover
751             both URL and TAG patterns.</p>
752           </li>
753
754           <li>
755             <p>In pcrs_strerror(), properly report unknown positive error
756             code values as such. Previously they were handled like 0 (no
757             error).</p>
758           </li>
759
760           <li>
761             <p>In compile_dynamic_pcrs_job_list(), also log the actual error
762             code as pcrs_strerror() doesn't handle all errors reported by
763             pcre.</p>
764           </li>
765
766           <li>
767             <p>Don't bother trying to continue chatting if the client didn't
768             ask for it. Reduces log noise a bit.</p>
769           </li>
770
771           <li>
772             <p>Make two fatal error message in load_one_actions_file() more
773             descriptive.</p>
774           </li>
775
776           <li>
777             <p>In cgi_send_user_manual(), log when rejecting a file name due
778             to '/' or '..'.</p>
779           </li>
780
781           <li>
782             <p>In load_file(), log a message if opening a file failed. The
783             CGI error message alone isn't too helpful.</p>
784           </li>
785
786           <li>
787             <p>In connection_destination_matches(), improve two log messages
788             to help understand why the destinations don't match.</p>
789           </li>
790
791           <li>
792             <p>Rephrase a log message in serve(). Client request arrival
793             should be differentiated from closed client connections now.</p>
794           </li>
795
796           <li>
797             <p>In serve(), log if a client connection isn't reused due to a
798             configuration file change.</p>
799           </li>
800
801           <li>
802             <p>Let mark_server_socket_tainted() always mark the server socket
803             tainted, just don't talk about it in cases where it has no
804             effect. It doesn't change Privoxy's behaviour, but makes
805             understanding the log file easier.</p>
806           </li>
807         </ul>
808       </li>
809
810       <li>
811         <p>configure:</p>
812
813         <ul>
814           <li>
815             <p>Added a --disable-ipv6-support switch for platforms where
816             support is detected but doesn't actually work.</p>
817           </li>
818
819           <li>
820             <p>Do not check for the existence of strerror() and memmove()
821             twice</p>
822           </li>
823
824           <li>
825             <p>Remove a useless test for setpgrp(2). Privoxy doesn't need it
826             and it can cause problems when cross-compiling.</p>
827           </li>
828
829           <li>
830             <p>Rename the --disable-acl-files switch to
831             --disable-acl-support. Since about 2001, ACL directives are
832             specified in the standard config file.</p>
833           </li>
834
835           <li>
836             <p>Update the URL of the 'Removing outdated PCRE version after
837             the next stable release' posting. The old URL stopped working
838             after one of SF's recent site "optimizations". Reported by Han
839             Liu.</p>
840           </li>
841         </ul>
842       </li>
843
844       <li>
845         <p>Privoxy-Regression-Test:</p>
846
847         <ul>
848           <li>
849             <p>Added --shuffle-tests option to increase the chances of
850             detection race conditions.</p>
851           </li>
852
853           <li>
854             <p>Added a --local-test-file option that allows to use
855             Privoxy-Regression-Test without Privoxy.</p>
856           </li>
857
858           <li>
859             <p>Added tests for missing socks4 and socks4a forwarders.</p>
860           </li>
861
862           <li>
863             <p>The --privoxy-address option now works with IPv6 addresses
864             containing brackets, too.</p>
865           </li>
866
867           <li>
868             <p>Perform limited sanity checks for parameters that are supposed
869             to have numerical values.</p>
870           </li>
871
872           <li>
873             <p>Added a --sleep-time option to specify a number of seconds to
874             sleep between tests, defaults to 0.</p>
875           </li>
876
877           <li>
878             <p>Disable the range-requests tagger for tests that break if it's
879             enabled.</p>
880           </li>
881
882           <li>
883             <p>Log messages use the ISO 8601 date format %Y-%m-%d.</p>
884           </li>
885
886           <li>
887             <p>Fix spelling in two error messages.</p>
888           </li>
889
890           <li>
891             <p>In the --help output, include a list of supported tests and
892             their default levels.</p>
893           </li>
894
895           <li>
896             <p>Adjust the tests to properly deal with FEATURE_TOGGLE being
897             disabled.</p>
898           </li>
899         </ul>
900       </li>
901
902       <li>
903         <p>Privoxy-Log-Parser:</p>
904
905         <ul>
906           <li>
907             <p>Perform limited sanity checks for command line parameters that
908             are supposed to have numerical values.</p>
909           </li>
910
911           <li>
912             <p>Implement a --unbreak-lines-only option to try to revert MUA
913             breakage.</p>
914           </li>
915
916           <li>
917             <p>Accept and highlight: Added header: Content-Encoding:
918             deflate</p>
919           </li>
920
921           <li>
922             <p>Accept and highlight: Compressed content from 29258 to 8630
923             bytes.</p>
924           </li>
925
926           <li>
927             <p>Accept and highlight: Client request arrived in time on socket
928             21.</p>
929           </li>
930
931           <li>
932             <p>Highlight: Didn't receive data in time: a.fsdn.com:443</p>
933           </li>
934
935           <li>
936             <p>Accept log messages with ISO 8601 time stamps, too.</p>
937           </li>
938         </ul>
939       </li>
940
941       <li>
942         <p>uagen:</p>
943
944         <ul>
945           <li>
946             <p>Bump generated Firefox version to 8.0.</p>
947           </li>
948
949           <li>
950             <p>Only randomize the release date if the new
951             --randomize-release-date option is enabled. Firefox versions
952             after 4 use a fixed date string without meaning.</p>
953           </li>
954         </ul>
955       </li>
956     </ul>
957
958     <div class="SECT2">
959       <h2 class="SECT2"><a name="UPGRADERSNOTE" id="UPGRADERSNOTE">3.1. Note
960       to Upgraders</a></h2>
961
962       <p>A quick list of things to be aware of before upgrading from earlier
963       versions of <span class="APPLICATION">Privoxy</span>:</p>
964
965       <ul>
966         <li>
967           <p>The recommended way to upgrade <span class=
968           "APPLICATION">Privoxy</span> is to backup your old configuration
969           files, install the new ones, verify that <span class=
970           "APPLICATION">Privoxy</span> is working correctly and finally merge
971           back your changes using <span class="APPLICATION">diff</span> and
972           maybe <span class="APPLICATION">patch</span>.</p>
973
974           <p>There are a number of new features in each <span class=
975           "APPLICATION">Privoxy</span> release and most of them have to be
976           explicitly enabled in the configuration files. Old configuration
977           files obviously don't do that and due to syntax changes using old
978           configuration files with a new <span class=
979           "APPLICATION">Privoxy</span> isn't always possible anyway.</p>
980         </li>
981
982         <li>
983           <p>Note that some installers remove earlier versions completely,
984           including configuration files, therefore you should really save any
985           important configuration files!</p>
986         </li>
987
988         <li>
989           <p>On the other hand, other installers don't overwrite existing
990           configuration files, thinking you will want to do that
991           yourself.</p>
992         </li>
993
994         <li>
995           <p><tt class="FILENAME">standard.action</tt> has been merged into
996           the <tt class="FILENAME">default.action</tt> file.</p>
997         </li>
998
999         <li>
1000           <p>In the default configuration only fatal errors are logged now.
1001           You can change that in the <a href="config.html#DEBUG">debug
1002           section</a> of the configuration file. You may also want to enable
1003           more verbose logging until you verified that the new <span class=
1004           "APPLICATION">Privoxy</span> version is working as expected.</p>
1005         </li>
1006
1007         <li>
1008           <p>Three other config file settings are now off by default:
1009           <a href="config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a>,
1010           <a href=
1011           "config.html#ENABLE-REMOTE-HTTP-TOGGLE">enable-remote-http-toggle</a>,
1012           and <a href=
1013           "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a>. If you
1014           use or want these, you will need to explicitly enable them, and be
1015           aware of the security issues involved.</p>
1016         </li>
1017       </ul>
1018     </div>
1019   </div>
1020
1021   <div class="NAVFOOTER">
1022     <hr align="left" width="100%">
1023
1024     <table summary="Footer navigation table" width="100%" border="0"
1025     cellpadding="0" cellspacing="0">
1026       <tr>
1027         <td width="33%" align="left" valign="top"><a href="installation.html"
1028         accesskey="P">Prev</a></td>
1029
1030         <td width="34%" align="center" valign="top"><a href="index.html"
1031         accesskey="H">Home</a></td>
1032
1033         <td width="33%" align="right" valign="top"><a href="quickstart.html"
1034         accesskey="N">Next</a></td>
1035       </tr>
1036
1037       <tr>
1038         <td width="33%" align="left" valign="top">Installation</td>
1039
1040         <td width="34%" align="center" valign="top">&nbsp;</td>
1041
1042         <td width="33%" align="right" valign="top">Quickstart to Using
1043         Privoxy</td>
1044       </tr>
1045     </table>
1046   </div>
1047 </body>
1048 </html>