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