181113e41d16ca6fba85a04c1f004b758889090d
[privoxy.git] / doc / webserver / announce.txt
1               Announcing Privoxy v.3.0.20 beta
2 --------------------------------------------------------------------
3
4 This is a beta release that introduces new features and fixes a
5 couple of bugs. One new feature (tolerate-pipelining) is enabled
6 in the default configuration, depending on the feedback it may be
7 disabled in the next release.
8
9 --------------------------------------------------------------------
10 ChangeLog for Privoxy
11 --------------------------------------------------------------------
12 *** Version 3.0.20 Beta ***
13
14 - Bug fixes:
15   - Client sockets are now properly shutdown and drained before being
16     closed. This fixes page truncation issues with clients that aggressively
17     pipeline data on platforms that otherwise discard already written data.
18     The issue mainly affected Opera users and was initially reported
19     by Kevin in #3464439, szotsaki provided additional information to track
20     down the cause.
21   - Fix latency calculation for shared connections (disabled by default).
22     It was broken since their introduction in 2009. The calculated latency
23     for most connections would be 0 in which case the timeout detection
24     failed to account for the real latency.
25   - Reject URLs with invalid port. Previously they were parsed incorrectly and
26     characters between the port number and the first slash were silently
27     dropped as shown by curl test 187.
28   - The default-server-timeout and socket-timeout directives accept 0 as
29     valid value.
30   - Fix a race condition on Windows that could cause Privoxy to become
31     unresponsive after toggling it on or off through the taskbar icon.
32     Reported by Tim H. in #3525694.
33   - Fix the compilation on Windows when configured without IPv6 support.
34   - Fix an assertion that could cause debug builds to abort() in case of
35     socks5 connection failures with "debug 2" enabled.
36   - Fix an assertion that could cause debug builds to abort() if a filter
37     contained nul bytes in the replacement text.
38
39 - General improvements:
40   - Significantly improved keep-alive support for both client and server
41     connections.
42   - New debug log level 65536 which logs all actions that were applied to
43     the request.
44   - New directive client-header-order to forward client headers in a
45     different order than the one in which they arrived.
46   - New directive tolerate-pipelining to allow client-side pipelining.
47     If enabled (3.0.20 beta enables it by default), Privoxy will keep
48     pipelined client requests around to deal with them once the current
49     request has been served.
50   - New --config-test option to let Privoxy exit after checking whether or not
51     the configuration seems valid. The limitations noted in TODO #22 and #23
52     still apply. Based on a patch by Ramkumar Chinchani.
53   - New limit-cookie-lifetime{} action to let cookies expire before the end
54     of the session. Suggested by Rick Sykes in #1049575.
55   - Increase the hard-coded maximum number of actions and filter files from
56     10 to 30 (each). It doesn't significantly affect Privoxy's memory usage
57     and recompiling wasn't an option for all Privoxy users that reached the
58     limit.
59   - Add support for chunk-encoded client request bodies. Previously
60     chunk-encoded request bodies weren't guaranteed to be forwarded correctly,
61     so this can also be considered a bug fix although chunk-encoded request
62     bodies aren't commonly used in the real world.
63   - Add support for Tor's optimistic-data SOCKS extension, which can reduce the
64     latency for requests on newly created connections. Currently only the
65     headers are sent optimistically and only if the client request has already
66     been read completely which rules out requests with large bodies.
67   - After preventing the client from pipelining, don't signal keep-alive
68     intentions. When looking at the response headers alone, it previously
69     wasn't obvious from the client's perspective that no additional responses
70     should be expected.
71   - Stop considering client sockets tainted after receving a request with body.
72     It hasn't been necessary for a while now and unnecessarily causes test
73     failures when using curl's test suite.
74   - Allow HTTP/1.0 clients to signal interest in keep-alive through the
75     Proxy-Connection header. While such client are rare in the real world, it
76     doesn't hurt and couple of curl tests rely on it.
77   - Only remove duplicated Content-Type headers when filters are enabled.
78     If they are not it doesn't cause ill effects and the user might not want it.
79     Downgrade the removal message to LOG_LEVEL_HEADER to clarify that it's not
80     an error in Privoxy and is unlikely to cause any problems in general.
81     Anonymously reported in #3599335.
82   - Set the socket option SO_LINGER for the client socket.
83   - Move several variable declarations to the beginning of their code block.
84     It's required when compiling with gcc 2.95 which is still used on some
85     platforms. Initial patch submitted by Simon South in #3564815.
86   - Optionally try to sanity-check strptime() results before trusting them.
87     Broken strptime() implementations have caused problems in the past and
88     the most recent offender seems to be FreeBSD's libc (standards/173421).
89   - When filtering is enabled, let Range headers pass if the range starts at
90     the beginning. This should work around (or at least reduce ) the video
91     playback issues with various Apple clients as reported by Duc in #3426305.
92   - Do not confuse a client hanging up with a connection time out. If a client
93     closes its side of the connection without sending a request line, do not
94     send the CLIENT_CONNECTION_TIMEOUT_RESPONSE, but report the condition
95     properly.
96   - Allow closing curly braces as part of action values as long as they are
97     escaped.
98   - On Windows, the logfile is now written before showing the GUI error
99     message which blocks until the user acknowledges it.
100     Reported by Adriaan in #3593603.
101   - Remove an unreasonable parameter limit in the CGI interface. The new
102     parameter limit depends on the memory available and is currently unlikely
103     to be reachable, due to other limits in both Privoxy and common clients.
104     Reported by Andrew on ijbswa-users@.
105   - Decrease the chances of parse failures after requests with unsupported
106     methods were sent to the CGI interface.
107
108 - Action file improvements:
109   - Remove the comment that indicated that updated default.action versions
110     are released on their own.
111   - Block 'optimize.indieclick.com/' and 'optimized-by.rubiconproject.com/'
112   - Unblock 'adjamblog.wordpress.com/' and 'adjamblog.files.wordpress.com/'.
113     Reported by Ryan Farmer in #3496116.
114   - Unblock '/.*Bugtracker'. Reported by pwhk in #3522341.
115   - Add test URLs for '.freebsd.org' and '.watson.org'.
116   - Unblock '.urbandictionary.com/popular'.
117   - Block '.adnxs.com/'.
118   - Block 'farm.plista.com/widgetdata.php'.
119   - Block 'rotation.linuxnewmedia.com/'.
120   - Block 'reklamy.sfd.pl/'. Reported by kacperdominik in #3399948.
121   - Block 'g.adspeed.net/'.
122   - Unblock 'websupport.wdc.com/'. Reported by Adam Piggot in #3577851.
123   - Block '/openx/www/delivery/'.
124   - Disable fast-redirects for '.googleapis.com/'.
125   - Block 'imp.double.net/'. Reported by David Bo in #3070411.
126   - Block 'gm-link.com/' whis is used for email tracking.
127     Reported by David Bo in #1812733.
128   - Verify that requests to "bwp." are blocked. URL taken from #1736879
129     submitted by Francois Marier.
130   - Block '/.*bannerid='. Reported by Adam Piggott in #2975779.
131   - Block 'cltomedia.info/delivery/' and '.adexprt.com/'.
132     Anonymously reported in #2965254.
133   - Block 'de17a.com/'. Reported by David Bo in #3061472.
134   - Block 'oskar.tradera.com/'. Reported by David Bo in #3060596.
135   - Block '/scripts/webtrends\.js'. Reported by johnd16 in #3002729.
136   - Block requests for 'pool.*.adhese.com/'. Reported by johnd16 in #3002716.
137   - Update path pattern for Coremetrics and add tests.
138     Pattern and URLs submitted by Adam Piggott #3168443.
139   - Enable +fast-redirects{check-decoded-url} for 'tr.anp.se/'.
140     Reported by David Bo in #3268832.
141   - Unblock '.conrad.se/newsletter/banners/'. Reported by David Bo in #3413824.
142   - Block '.tynt.com/'. Reported by Dan Stahlke in #3421767.
143   - Unblock '.bbci.co.uk/radio/'. Reported by Adam Piggott in #3569603.
144   - Block requests to 'service.maxymiser.net/'.
145     Reported by johnd16 in #3118401 (with a previous URL).
146   - Disable fast-redirects for Google's "let's pretend your computer is
147     infected" page.
148   - Unblock '/.*download' to resolve actionsfile feedback #3498129.
149     Submitted by Steven Kolins (soundcloud.com not working).
150   - Unblock '.wlxrs.com/' which is required by hotmail.com.
151     Fixes #3413827 submitted by David Bo.
152   - Add two unblock patterns for popup radio and TV players.
153     Submitted by Adam Piggott in #3596089.
154
155 - Filter file improvements & bug fixes:
156   - Add a referer tagger.
157   - Reduce the likelihood that the google filter messes up HTML-generating
158     JavaScript. Reported by Zeno Kugy in #3520260.
159
160 - Documentation improvements:
161   - Revised all OS X sections due to new packaging module (OSXPackageBuilder).
162   - Update the list of supported operating systems to clarify that all Windows
163     versions after 95 are expected to work and note that the platform-specific
164     code for AmigaOS and QNX currently isn't maintained.
165   - Update 'Signals' section, the only explicitly handled signals are SIGINT,
166     SIGTERM and SIGHUP.
167   - Add Haiku to the list of operating systems on which Privoxy is known to
168     run.
169   - Add DragonFly to the list of BSDs on which Privoxy is known to run.
170   - Removed references to redhat-specific documentation set since it no longer
171     exists.
172   - Removed references to building PDFs since we no longer do so.
173   - Multiple listen-address directives are supported since 3.0.18, correct the
174     documentation to say so.
175   - Remove bogus section about long and short being preferable to int.
176   - Corrected some Internet JunkBuster references to Privoxy.
177   - Removed references to www.junkbusters.com since it is no longer
178     maintained. Reported by Angelina Matson.
179   - Various grammar and spelling corrections
180   - Add a client-header-tagger{} example for disabling filtering for range
181     requests.
182   - Correct a URL in the "Privoxy with Tor" FAQ.
183   - Spell 'refresh-tags' correctly. Reported by Don in #3571927.
184   - Sort manpage options alphabetically.
185   - Remove an incorrect sentence in the toggle section. The toggle state
186     doesn't affect whether or not the Windows version uses the tray icon.
187     Reported by Zeno Kugy in #3596395.
188   - Add new contributors since 3.0.19.
189
190 - Log message improvements:
191   - When stopping to watch a client socket due to pipelining, additionally log
192     the socket number.
193   - Log the client socket and its condition before closing it. This makes it
194     more obvious that the socket actually gets closed and should help when
195     diagnosing problems like #3464439.
196   - In case of SOCKS5 failures, do not explicitly log the server's response.
197     It hasn't helped so far and the response can already be logged by enabling
198     "debug 32768" anyway. This reverts v1.81 and the follow-up bug fix v1.84.
199   - Relocate the connection-accepted message from listen_loop() to serve().
200     This way it's printed by the thread that is actually serving the
201     connection which is nice when grepping for thread ids in log files.
202
203 - Code cleanups:
204   - Remove compatibility layer for versions prior to 3.0 since it has been
205     obsolete for more than 10 years now.
206   - Remove the ijb_isupper() and ijb_tolower() macros from parsers.c since
207     they aren't used in this file.
208   - Removed the 'Functions declared include:' comment sections since they tend
209     to be incomplete, incorrect and out of date and the benefit seems
210     questionable.
211   - Various comment grammar and comprehensibility improvements.
212   - Remove a pointless fflush() call in chat(). Flushing all streams pretty
213     much all the time for no obvious reason is ridiculous.
214   - Relocate ijb_isupper()'s definition to project.h and get the ijb_tolower()
215     definition from there, too.
216   - Relocate ijb_isdigit()'s definition to project.h.
217   - Rename ijb_foo macros to privoxy_foo.
218   - Add malloc_or_die() which will allow to simplify code paths where malloc()
219     failures don't need to be handled gracefully.
220   - Add strdup_or_die() which will allow to simplify code paths where strdup()
221     failures don't need to be handled gracefully.
222   - Replace strdup() calls with strdup_or_die() calls where it's safe and
223     simplifies the code.
224   - Fix white-space around parentheses.
225   - Add missing white-space behind if's and the following parentheses.
226   - Unwrap a memcpy() call in resolve_hostname_to_ip().
227   - Declare pcrs_get_delimiter()'s delimiters[] static const.
228   - Various optimisations to remove dead code and merge inefficient code
229     structures for improved clarity, performance or code compactness.
230   - Various data type corrections.
231   - Change visibility of several code segments when compiling without
232     FEATURE_CONNECTION_KEEP_ALIVE enabled for clarity.
233   - In pcrs_get_delimiter(), do not use delimiters ouside the ASCII range.
234     Fixes a clang complaint.
235   - Fix an error message in get_last_url() nobody is supposed to see.
236     Reported by Matthew Fischer in #3507301.
237   - Fix a typo in the no-zlib-support complaint. Patch submitted by Matthew
238     Fischer in #3507304.
239   - Shorten ssplit()'s prototype by removing the last two arguments. We always
240     want to skip empty fields and ignore leading delimiters, so having
241     parameters for this only complicates the API.
242   - Use an enum for the type of the action value.
243   - Rename action_name's member takes_value to value_type as it isn't used as
244     boolean.
245   - Turn family mismatches in match_sockaddr() into fatal errors.
246   - Let enlist_unique_header() verify that the caller didn't pass a header
247     containing either \r or \n.
248   - Change the hashes used in load_config() to unsigned int. That's what
249     hash_string() actually returns and using a potentiallly larger type
250     is at best useless.
251   - Use privoxy_tolower() instead of vanilla tolower() with manual casting of
252     the argument.
253   - Catch ssplit() failures in parse_cgi_parameters().
254
255 - Privoxy-Regression-Test:
256   - Add an 'Overwrite condition' directive to skip any matching tests before
257     it. As it has a global scope, using it is more convenient than clowning
258     around with the Ignore directive.
259   - Log to STDOUT instead of STDERR.
260   - Include the Privoxy version in the output.
261   - Various grammar and spelling corrections in documentation and code.
262   - Additional tests for range requests with filtering enabled.
263   - Tests with mostly invalid range request.
264   - Add a couple of hide-if-modified-since{} tests with different date formats.
265   - Cleaned up the format of the regression-tests.action file to match the
266     format of default.action.
267   - Remove the "Copyright" line from print_version(). When using --help, every
268     line of screen space matters and thus shouldn't be wasted on things the
269     user doesn't care about.
270
271 - Privoxy-Log-Parser:
272   - Improve the --statistics performance by skipping sanity checks for input
273     that shouldn't affect the results anyway. Add a --strict-checks option
274     that enables some of the checks again, just in case anybody cares.
275   - The distribution of client requests per connection is included in
276     the --statistic output.
277   - The --accept-unknown-messages option has been removed and the behavior
278     is now the default.
279   - Accept and (mostly) highlight new log messages introduced with
280     Privoxy 3.0.20.
281
282 - uagen:
283   - Bump generated Firefox version to 17.
284
285 - GNUmakefile improvements:
286   - The dok-tidy target no longer taints documents with a tidy-mark
287   - Change RA_MODE from 0664 to 0644. Suggested by Markus Dittrich in
288     #3505445.
289   - Remove tidy's clean flag as it changes the scope of attributes.
290     Link-specific colors end up being applied to all text. Reported by Adam
291     Piggott in #3569551.
292   - Leave it up to the user whether or not smart tags are inserted.
293   - Let w3m itself do the line wrapping for the config file. It works better
294     than fmt as it can honour pre tags causing less unintentional line breaks.
295   - Ditch a pointless '-r' passed to rm to delete files.
296   - The config-file target now requires less manual intervention and updates
297     the original config.
298   - Change WDUMP to generate ASCII. Add WDUMP_UTF8 to allow UTF-8 in the
299     AUTHORS file so the names are right.
300   - Stop pretending that lynx and links are supported for the documentation.
301
302 - configure improvements:
303   - On Haiku, do not pass -lpthread to the compiler. Haiku's pthreads
304     implementation is contained in its system library, libroot, so no
305     additional library needs to be searched.
306     Patch submitted by Simon South in #3564815.
307   - Additional Haiku-specific improvements. Disable checks intended for
308     multi-user systems as Haiku is presently single-user. Group Haiku-specific
309     settings in their own section, following the pattern for Solaris, OS/2 and
310     AmigaOS. Add additional library-related settings to remove the need for
311     providing configure with custom LDFLAGS.
312     Submitted by Simon South in #3574538.
313
314 -----------------------------------------------------------------
315 About Privoxy:
316 -----------------------------------------------------------------
317
318 Privoxy is a non-caching web proxy with advanced filtering capabilities for
319 enhancing privacy, modifying web page data and HTTP headers, controlling
320 access, and removing ads and other obnoxious Internet junk. Privoxy has a
321 flexible configuration and can be customized to suit individual needs and
322 tastes. It has application for both stand-alone systems and multi-user
323 networks.
324
325 Privoxy is Free Software and licensed under the GNU GPLv2.
326
327 Privoxy is an associated project of Software in the Public Interest (SPI).
328
329 Helping hands and donations are welcome:
330
331   * http://www.privoxy.org/faq/general.html#PARTICIPATE
332
333   * http://www.privoxy.org/faq/general.html#DONATE
334
335 At present, Privoxy is known to run on Windows 95 and later versions
336 (98, ME, 2000, XP, Vista, Windows 7 etc.), GNU/Linux (RedHat, SuSE,
337 Debian, Fedora, Gentoo, Slackware and others), Mac OS X (10.4 and
338 upwards on PPC and Intel processors), OS/2, Haiku, DragonFly,
339 FreeBSD, NetBSD, OpenBSD, Solaris, and various other flavors of Unix.
340
341 In addition to the core features of ad blocking and cookie management,
342 Privoxy provides many supplemental features, that give the end-user
343 more control, more privacy and more freedom:
344
345
346     *  Supports "Connection: keep-alive". Outgoing connections can be kept
347        alive independently from the client. Currently not available on all
348        platforms.
349
350     *  Supports IPv6, provided the operating system does so too,
351        and the configure script detects it.
352
353     *  Supports tagging which allows to change the behaviour based on client
354        and server headers.
355
356     *  Can be run as an "intercepting" proxy, which obviates the need to
357        configure browsers individually.
358
359     *  Sophisticated actions and filters for manipulating both server and
360        client headers.
361
362     *  Can be chained with other proxies.
363
364     *  Integrated browser based configuration and control utility at
365        http://config.privoxy.org/ (shortcut: http://p.p/). Browser-based
366        tracing of rule and filter effects. Remote toggling.
367
368     *  Web page filtering (text replacements, removes banners based on size,
369        invisible <quote>web-bugs</quote> and HTML annoyances, etc.)
370
371     *  Modularized configuration that allows for standard settings and user
372        settings to reside in separate files, so that installing updated actions
373        files won't overwrite individual user settings.
374
375     *  Support for Perl Compatible Regular Expressions in the configuration
376        files, and a more sophisticated and flexible configuration syntax.
377
378     *  GIF de-animation.
379
380     *  Bypass many click-tracking scripts (avoids script redirection).
381
382     *  User-customizable HTML templates for most proxy-generated pages (e.g.
383        "blocked" page).
384
385     *  Auto-detection and re-reading of config file changes.
386     
387     *  Most features are controllable on a per-site or per-location basis.
388     
389
390 Download location: 
391    http://sourceforge.net/project/showfiles.php?group_id=11118
392  
393 Home Page: 
394    http://www.privoxy.org/
395
396
397   - Privoxy Developers <ijbswa-developers@lists.sourceforge.net>