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