1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
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=
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">
18 <body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
19 "#840084" alink="#0000FF">
20 <div class="NAVHEADER">
21 <table summary="Header navigation table" width="100%" border="0"
22 cellpadding="0" cellspacing="0">
24 <th colspan="3" align="center">Privoxy 3.0.20 User Manual</th>
28 <td width="10%" align="left" valign="bottom"><a href=
29 "installation.html" accesskey="P">Prev</a></td>
31 <td width="80%" align="center" valign="bottom"></td>
33 <td width="10%" align="right" valign="bottom"><a href=
34 "quickstart.html" accesskey="N">Next</a></td>
37 <hr align="left" width="100%">
41 <h1 class="SECT1"><a name="WHATSNEW" id="WHATSNEW">3. What's New in this
44 <p><span class="APPLICATION">Privoxy 3.0.20</span> is a beta release. The
45 changes since 3.0.19 stable are:</p>
53 <p>Client sockets are now properly shutdown and drained before
54 being closed. This fixes page truncation issues with clients that
55 aggressively pipeline data on platforms that otherwise discard
56 already written data. The issue mainly affected Opera users and
57 was initially reported by Kevin in #3464439, szotsaki provided
58 additional information to track down the cause.</p>
62 <p>Fix latency calculation for shared connections (disabled by
63 default). It was broken since their introduction in 2009. The
64 calculated latency for most connections would be 0 in which case
65 the timeout detection failed to account for the real latency.</p>
69 <p>Reject URLs with invalid port. Previously they were parsed
70 incorrectly and characters between the port number and the first
71 slash were silently dropped as shown by curl test 187.</p>
75 <p>The default-server-timeout and socket-timeout directives
76 accept 0 as valid value.</p>
80 <p>Fix a race condition on Windows that could cause Privoxy to
81 become unresponsive after toggling it on or off through the
82 taskbar icon. Reported by Tim H. in #3525694.</p>
86 <p>Fix the compilation on Windows when configured without IPv6
91 <p>Fix an assertion that could cause debug builds to abort() in
92 case of socks5 connection failures with "debug 2" enabled.</p>
96 <p>Fix an assertion that could cause debug builds to abort() if a
97 filter contained nul bytes in the replacement text.</p>
103 <p>General improvements:</p>
107 <p>Significantly improved keep-alive support for both client and
108 server connections.</p>
112 <p>New debug log level 65536 which logs all actions that were
113 applied to the request.</p>
117 <p>New directive client-header-order to forward client headers in
118 a different order than the one in which they arrived.</p>
122 <p>New directive tolerate-pipelining to allow client-side
123 pipelining. If enabled (3.0.20 beta enables it by default),
124 Privoxy will keep pipelined client requests around to deal with
125 them once the current request has been served.</p>
129 <p>New --config-test option to let Privoxy exit after checking
130 whether or not the configuration seems valid. The limitations
131 noted in TODO #22 and #23 still apply. Based on a patch by
132 Ramkumar Chinchani.</p>
136 <p>New limit-cookie-lifetime{} action to let cookies expire
137 before the end of the session. Suggested by Rick Sykes in
142 <p>Increase the hard-coded maximum number of actions and filter
143 files from 10 to 30 (each). It doesn't significantly affect
144 Privoxy's memory usage and recompiling wasn't an option for all
145 Privoxy users that reached the limit.</p>
149 <p>Add support for chunk-encoded client request bodies.
150 Previously chunk-encoded request bodies weren't guaranteed to be
151 forwarded correctly, so this can also be considered a bug fix
152 although chunk-encoded request bodies aren't commonly used in the
157 <p>Add support for Tor's optimistic-data SOCKS extension, which
158 can reduce the latency for requests on newly created connections.
159 Currently only the headers are sent optimistically and only if
160 the client request has already been read completely which rules
161 out requests with large bodies.</p>
165 <p>After preventing the client from pipelining, don't signal
166 keep-alive intentions. When looking at the response headers
167 alone, it previously wasn't obvious from the client's perspective
168 that no additional responses should be expected.</p>
172 <p>Stop considering client sockets tainted after receiving a
173 request with body. It hasn't been necessary for a while now and
174 unnecessarily causes test failures when using curl's test
179 <p>Allow HTTP/1.0 clients to signal interest in keep-alive
180 through the Proxy-Connection header. While such client are rare
181 in the real world, it doesn't hurt and couple of curl tests rely
186 <p>Only remove duplicated Content-Type headers when filters are
187 enabled. If they are not it doesn't cause ill effects and the
188 user might not want it. Downgrade the removal message to
189 LOG_LEVEL_HEADER to clarify that it's not an error in Privoxy and
190 is unlikely to cause any problems in general. Anonymously
191 reported in #3599335.</p>
195 <p>Set the socket option SO_LINGER for the client socket.</p>
199 <p>Move several variable declarations to the beginning of their
200 code block. It's required when compiling with gcc 2.95 which is
201 still used on some platforms. Initial patch submitted by Simon
202 South in #3564815.</p>
206 <p>Optionally try to sanity-check strptime() results before
207 trusting them. Broken strptime() implementations have caused
208 problems in the past and the most recent offender seems to be
209 FreeBSD's libc (standards/173421).</p>
213 <p>When filtering is enabled, let Range headers pass if the range
214 starts at the beginning. This should work around (or at least
215 reduce) the video playback issues with various Apple clients as
216 reported by Duc in #3426305.</p>
220 <p>Do not confuse a client hanging up with a connection time out.
221 If a client closes its side of the connection without sending a
222 request line, do not send the CLIENT_CONNECTION_TIMEOUT_RESPONSE,
223 but report the condition properly.</p>
227 <p>Allow closing curly braces as part of action values as long as
228 they are escaped.</p>
232 <p>On Windows, the logfile is now written before showing the GUI
233 error message which blocks until the user acknowledges it.
234 Reported by Adriaan in #3593603.</p>
238 <p>Remove an unreasonable parameter limit in the CGI interface.
239 The new parameter limit depends on the memory available and is
240 currently unlikely to be reachable, due to other limits in both
241 Privoxy and common clients. Reported by Andrew on
246 <p>Decrease the chances of parse failures after requests with
247 unsupported methods were sent to the CGI interface.</p>
253 <p>Action file improvements:</p>
257 <p>Remove the comment that indicated that updated default.action
258 versions are released on their own.</p>
262 <p>Block 'optimize.indieclick.com/' and
263 'optimized-by.rubiconproject.com/'</p>
267 <p>Unblock 'adjamblog.wordpress.com/' and
268 'adjamblog.files.wordpress.com/'. Reported by Ryan Farmer in
273 <p>Unblock '/.*Bugtracker'. Reported by pwhk in #3522341.</p>
277 <p>Add test URLs for '.freebsd.org' and '.watson.org'.</p>
281 <p>Unblock '.urbandictionary.com/popular'.</p>
285 <p>Block '.adnxs.com/'.</p>
289 <p>Block 'farm.plista.com/widgetdata.php'.</p>
293 <p>Block 'rotation.linuxnewmedia.com/'.</p>
297 <p>Block 'reklamy.sfd.pl/'. Reported by kacperdominik in
302 <p>Block 'g.adspeed.net/'.</p>
306 <p>Unblock 'websupport.wdc.com/'. Reported by Adam Piggot in
311 <p>Block '/openx/www/delivery/'.</p>
315 <p>Disable fast-redirects for '.googleapis.com/'.</p>
319 <p>Block 'imp.double.net/'. Reported by David Bo in #3070411.</p>
323 <p>Block 'gm-link.com/' which is used for email tracking.
324 Reported by David Bo in #1812733.</p>
328 <p>Verify that requests to "bwp." are blocked. URL taken from
329 #1736879 submitted by Francois Marier.</p>
333 <p>Block '/.*bannerid='. Reported by Adam Piggott in
338 <p>Block 'cltomedia.info/delivery/' and '.adexprt.com/'.
339 Anonymously reported in #2965254.</p>
343 <p>Block 'de17a.com/'. Reported by David Bo in #3061472.</p>
347 <p>Block 'oskar.tradera.com/'. Reported by David Bo in
352 <p>Block '/scripts/webtrends\.js'. Reported by johnd16 in
357 <p>Block requests for 'pool.*.adhese.com/'. Reported by johnd16
362 <p>Update path pattern for Coremetrics and add tests. Pattern and
363 URLs submitted by Adam Piggott #3168443.</p>
367 <p>Enable +fast-redirects{check-decoded-url} for 'tr.anp.se/'.
368 Reported by David Bo in #3268832.</p>
372 <p>Unblock '.conrad.se/newsletter/banners/'. Reported by David Bo
377 <p>Block '.tynt.com/'. Reported by Dan Stahlke in #3421767.</p>
381 <p>Unblock '.bbci.co.uk/radio/'. Reported by Adam Piggott in
386 <p>Block requests to 'service.maxymiser.net/'. Reported by
387 johnd16 in #3118401 (with a previous URL).</p>
391 <p>Disable fast-redirects for Google's "let's pretend your
392 computer is infected" page.</p>
396 <p>Unblock '/.*download' to resolve actionsfile feedback
397 #3498129. Submitted by Steven Kolins (soundcloud.com not
402 <p>Unblock '.wlxrs.com/' which is required by hotmail.com. Fixes
403 #3413827 submitted by David Bo.</p>
407 <p>Add two unblock patterns for popup radio and TV players.
408 Submitted by Adam Piggott in #3596089.</p>
414 <p>Filter file improvements & bug fixes:</p>
418 <p>Add a referer tagger.</p>
422 <p>Reduce the likelihood that the google filter messes up
423 HTML-generating JavaScript. Reported by Zeno Kugy in
430 <p>Documentation improvements:</p>
434 <p>Revised all OS X sections due to new packaging module
435 (OSXPackageBuilder).</p>
439 <p>Update the list of supported operating systems to clarify that
440 all Windows versions after 95 are expected to work and note that
441 the platform-specific code for AmigaOS and QNX currently isn't
446 <p>Update 'Signals' section, the only explicitly handled signals
447 are SIGINT, SIGTERM and SIGHUP.</p>
451 <p>Add Haiku to the list of operating systems on which Privoxy is
456 <p>Add DragonFly to the list of BSDs on which Privoxy is known to
461 <p>Removed references to redhat-specific documentation set since
462 it no longer exists.</p>
466 <p>Removed references to building PDFs since we no longer do
471 <p>Multiple listen-address directives are supported since 3.0.18,
472 correct the documentation to say so.</p>
476 <p>Remove bogus section about long and short being preferable to
481 <p>Corrected some Internet JunkBuster references to Privoxy.</p>
485 <p>Removed references to www.junkbusters.com since it is no
486 longer maintained. Reported by Angelina Matson.</p>
490 <p>Various grammar and spelling corrections</p>
494 <p>Add a client-header-tagger{} example for disabling filtering
495 for range requests.</p>
499 <p>Correct a URL in the "Privoxy with Tor" FAQ.</p>
503 <p>Spell 'refresh-tags' correctly. Reported by Don in
508 <p>Sort manpage options alphabetically.</p>
512 <p>Remove an incorrect sentence in the toggle section. The toggle
513 state doesn't affect whether or not the Windows version uses the
514 tray icon. Reported by Zeno Kugy in #3596395.</p>
518 <p>Add new contributors since 3.0.19.</p>
524 <p>Log message improvements:</p>
528 <p>When stopping to watch a client socket due to pipelining,
529 additionally log the socket number.</p>
533 <p>Log the client socket and its condition before closing it.
534 This makes it more obvious that the socket actually gets closed
535 and should help when diagnosing problems like #3464439.</p>
539 <p>In case of SOCKS5 failures, do not explicitly log the server's
540 response. It hasn't helped so far and the response can already be
541 logged by enabling "debug 32768" anyway. This reverts v1.81 and
542 the follow-up bug fix v1.84.</p>
546 <p>Relocate the connection-accepted message from listen_loop() to
547 serve(). This way it's printed by the thread that is actually
548 serving the connection which is nice when grepping for thread ids
555 <p>Code cleanups:</p>
559 <p>Remove compatibility layer for versions prior to 3.0 since it
560 has been obsolete for more than 10 years now.</p>
564 <p>Remove the ijb_isupper() and ijb_tolower() macros from
565 parsers.c since they aren't used in this file.</p>
569 <p>Removed the 'Functions declared include:' comment sections
570 since they tend to be incomplete, incorrect and out of date and
571 the benefit seems questionable.</p>
575 <p>Various comment grammar and comprehensibility
580 <p>Remove a pointless fflush() call in chat(). Flushing all
581 streams pretty much all the time for no obvious reason is
586 <p>Relocate ijb_isupper()'s definition to project.h and get the
587 ijb_tolower() definition from there, too.</p>
591 <p>Relocate ijb_isdigit()'s definition to project.h.</p>
595 <p>Rename ijb_foo macros to privoxy_foo.</p>
599 <p>Add malloc_or_die() which will allow to simplify code paths
600 where malloc() failures don't need to be handled gracefully.</p>
604 <p>Add strdup_or_die() which will allow to simplify code paths
605 where strdup() failures don't need to be handled gracefully.</p>
609 <p>Replace strdup() calls with strdup_or_die() calls where it's
610 safe and simplifies the code.</p>
614 <p>Fix white-space around parentheses.</p>
618 <p>Add missing white-space behind if's and the following
623 <p>Unwrap a memcpy() call in resolve_hostname_to_ip().</p>
627 <p>Declare pcrs_get_delimiter()'s delimiters[] static const.</p>
631 <p>Various optimisations to remove dead code and merge
632 inefficient code structures for improved clarity, performance or
633 code compactness.</p>
637 <p>Various data type corrections.</p>
641 <p>Change visibility of several code segments when compiling
642 without FEATURE_CONNECTION_KEEP_ALIVE enabled for clarity.</p>
646 <p>In pcrs_get_delimiter(), do not use delimiters outside the
647 ASCII range. Fixes a clang complaint.</p>
651 <p>Fix an error message in get_last_url() nobody is supposed to
652 see. Reported by Matthew Fischer in #3507301.</p>
656 <p>Fix a typo in the no-zlib-support complaint. Patch submitted
657 by Matthew Fischer in #3507304.</p>
661 <p>Shorten ssplit()'s prototype by removing the last two
662 arguments. We always want to skip empty fields and ignore leading
663 delimiters, so having parameters for this only complicates the
668 <p>Use an enum for the type of the action value.</p>
672 <p>Rename action_name's member takes_value to value_type as it
673 isn't used as boolean.</p>
677 <p>Turn family mismatches in match_sockaddr() into fatal
682 <p>Let enlist_unique_header() verify that the caller didn't pass
683 a header containing either \r or \n.</p>
687 <p>Change the hashes used in load_config() to unsigned int.
688 That's what hash_string() actually returns and using a
689 potentially larger type is at best useless.</p>
693 <p>Use privoxy_tolower() instead of vanilla tolower() with manual
694 casting of the argument.</p>
698 <p>Catch ssplit() failures in parse_cgi_parameters().</p>
704 <p>Privoxy-Regression-Test:</p>
708 <p>Add an 'Overwrite condition' directive to skip any matching
709 tests before it. As it has a global scope, using it is more
710 convenient than clowning around with the Ignore directive.</p>
714 <p>Log to STDOUT instead of STDERR.</p>
718 <p>Include the Privoxy version in the output.</p>
722 <p>Various grammar and spelling corrections in documentation and
727 <p>Additional tests for range requests with filtering
732 <p>Tests with mostly invalid range request.</p>
736 <p>Add a couple of hide-if-modified-since{} tests with different
741 <p>Cleaned up the format of the regression-tests.action file to
742 match the format of default.action.</p>
746 <p>Remove the "Copyright" line from print_version(). When using
747 --help, every line of screen space matters and thus shouldn't be
748 wasted on things the user doesn't care about.</p>
754 <p>Privoxy-Log-Parser:</p>
758 <p>Improve the --statistics performance by skipping sanity checks
759 for input that shouldn't affect the results anyway. Add a
760 --strict-checks option that enables some of the checks again,
761 just in case anybody cares.</p>
765 <p>The distribution of client requests per connection is included
766 in the --statistic output.</p>
770 <p>The --accept-unknown-messages option has been removed and the
771 behavior is now the default.</p>
775 <p>Accept and (mostly) highlight new log messages introduced with
786 <p>Bump generated Firefox version to 17.</p>
792 <p>GNUmakefile improvements:</p>
796 <p>The dok-tidy target no longer taints documents with a
801 <p>Change RA_MODE from 0664 to 0644. Suggested by Markus Dittrich
806 <p>Remove tidy's clean flag as it changes the scope of
807 attributes. Link-specific colors end up being applied to all
808 text. Reported by Adam Piggott in #3569551.</p>
812 <p>Leave it up to the user whether or not smart tags are
817 <p>Let w3m itself do the line wrapping for the config file. It
818 works better than fmt as it can honour pre tags causing less
819 unintentional line breaks.</p>
823 <p>Ditch a pointless '-r' passed to rm to delete files.</p>
827 <p>The config-file target now requires less manual intervention
828 and updates the original config.</p>
832 <p>Change WDUMP to generate ASCII. Add WDUMP_UTF8 to allow UTF-8
833 in the AUTHORS file so the names are right.</p>
837 <p>Stop pretending that lynx and links are supported for the
844 <p>configure improvements:</p>
848 <p>On Haiku, do not pass -lpthread to the compiler. Haiku's
849 pthreads implementation is contained in its system library,
850 libroot, so no additional library needs to be searched. Patch
851 submitted by Simon South in #3564815.</p>
855 <p>Additional Haiku-specific improvements. Disable checks
856 intended for multi-user systems as Haiku is presently
857 single-user. Group Haiku-specific settings in their own section,
858 following the pattern for Solaris, OS/2 and AmigaOS. Add
859 additional library-related settings to remove the need for
860 providing configure with custom LDFLAGS. Submitted by Simon South
868 <h2 class="SECT2"><a name="UPGRADERSNOTE" id="UPGRADERSNOTE">3.1. Note
869 to Upgraders</a></h2>
871 <p>A quick list of things to be aware of before upgrading from earlier
872 versions of <span class="APPLICATION">Privoxy</span>:</p>
876 <p>The recommended way to upgrade <span class=
877 "APPLICATION">Privoxy</span> is to backup your old configuration
878 files, install the new ones, verify that <span class=
879 "APPLICATION">Privoxy</span> is working correctly and finally merge
880 back your changes using <span class="APPLICATION">diff</span> and
881 maybe <span class="APPLICATION">patch</span>.</p>
883 <p>There are a number of new features in each <span class=
884 "APPLICATION">Privoxy</span> release and most of them have to be
885 explicitly enabled in the configuration files. Old configuration
886 files obviously don't do that and due to syntax changes using old
887 configuration files with a new <span class=
888 "APPLICATION">Privoxy</span> isn't always possible anyway.</p>
892 <p>Note that some installers remove earlier versions completely,
893 including configuration files, therefore you should really save any
894 important configuration files!</p>
898 <p>On the other hand, other installers don't overwrite existing
899 configuration files, thinking you will want to do that
904 <p><tt class="FILENAME">standard.action</tt> has been merged into
905 the <tt class="FILENAME">default.action</tt> file.</p>
909 <p>In the default configuration only fatal errors are logged now.
910 You can change that in the <a href="config.html#DEBUG">debug
911 section</a> of the configuration file. You may also want to enable
912 more verbose logging until you verified that the new <span class=
913 "APPLICATION">Privoxy</span> version is working as expected.</p>
917 <p>Three other config file settings are now off by default:
918 <a href="config.html#ENABLE-REMOTE-TOGGLE">enable-remote-toggle</a>,
920 "config.html#ENABLE-REMOTE-HTTP-TOGGLE">enable-remote-http-toggle</a>,
922 "config.html#ENABLE-EDIT-ACTIONS">enable-edit-actions</a>. If you
923 use or want these, you will need to explicitly enable them, and be
924 aware of the security issues involved.</p>
930 <div class="NAVFOOTER">
931 <hr align="left" width="100%">
933 <table summary="Footer navigation table" width="100%" border="0"
934 cellpadding="0" cellspacing="0">
936 <td width="33%" align="left" valign="top"><a href="installation.html"
937 accesskey="P">Prev</a></td>
939 <td width="34%" align="center" valign="top"><a href="index.html"
940 accesskey="H">Home</a></td>
942 <td width="33%" align="right" valign="top"><a href="quickstart.html"
943 accesskey="N">Next</a></td>
947 <td width="33%" align="left" valign="top">Installation</td>
949 <td width="34%" align="center" valign="top"> </td>
951 <td width="33%" align="right" valign="top">Quickstart to Using