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