X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=ChangeLog;h=9ae41759167fb421fb00274325cf94b2e6c18873;hp=d7cefdc6e2a586d6aac7751a247d7d6336367542;hb=983ba27e15f4691702d498b14f6c1459254bcc78;hpb=8a35e738dc18c52b1fb55122e0bbbd88ea67a1ff diff --git a/ChangeLog b/ChangeLog index d7cefdc6..9ae41759 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,71 +1,562 @@ -------------------------------------------------------------------- ChangeLog for Privoxy -------------------------------------------------------------------- -*** Version 3.0.20 Beta *** +*** Version 3.0.25 beta *** - Bug fixes: - - Fix --disable-ipv6-support compile option for the Windows platform - - Attempt to work around (or at least reduce the) video playback issues with - various Apple clients as reported in #3426305. In client_range(), let - headers pass if the range starts at the beginning. - - In pcrs_get_delimiter(), do not use delimiters ouside the ASCII range. - Fixes a clang complaint. - - In socks5_connect(), do not try to print a negative number of socks - response bytes if the read() for the socks5 negotiation failed - completely. It's an API violation and can trigger an assert() in debug - builds with "debug 2" enabled. Except for the assert(), log_error() - already handled negative %N values gracefully so this commit only makes a - difference for debug builds. - - Fix a Windows-specific log viewer thread safety issue, as reported by Tim - H. in #3525694. - - Do not confuse a client hanging up with a connection time out. If a client - closes its side of the connection without sending a request line, do not - send the CLIENT_CONNECTION_TIMEOUT_RESPONSE, but report the condition - properly. - - Fix latency calculation for shared connections; broken since a regression - in 2009. The calculated latency for most connections would be 0 due to - remember_connection() always putting the timestamps in the first slot. - - Let fatal_error() write to the logfile right away, before showing the - Windows-specific error message which blocks until the user acknowledges it, - thus complicating automatic error detection. Reported by Adriaan in - #3593603. - - Fix an error message in get_last_url() nobody is supposed to see. Reported - by Matthew Fischer in #3507301. - - Fix a typo in the no-zlib-support complaint. Patch submitted by Matthew - Fischer in #3507304. - - Update an error message that still tried to print directive_hash as long - - Let server_set_cookie() stay silent when the cookie isn't modified. It - previously would claim to have created a session cookie after letting a - session cookie pass unmodified. - - Make any_loaded_file_changed() more reliable. Using the timestamps from. If - an action or filter file is reloaded the timestamps aren't updated so - any_loaded_file_changed() continued to report file changes. - + - Always use the current toggle state for new requests. + Previously new requests on reused connections inherited + the toggle state from the previous request even though + the toggle state could have changed. + Reported by Robert Klemme. + - Fixed two buffer-overflows in the (deprecated) static + pcre code. These bugs are not considered security issues + as the input is trusted. + Found with afl-fuzz and ASAN. + +- General improvements: + - Added support for client-specific tags which allow Privoxy + admins to pre-define tags that are set for all requests from + clients that previously opted in through the CGI interface. + They are useful in multi-user setups where admins may + want to allow users to disable certain actions and filters + for themselves without affecting others. + In single-user setups they are useful to allow more fine-grained + toggling. For example to disable request blocking while still + crunching cookies, or to disable experimental filters only. + This is an experimental feature, the syntax and behaviour may + change in future versions. + Sponsored by Robert Klemme. + - Dynamic filters and taggers now support a $listen-address variable + which contains the address the request came in on. + For external filters the variable is called $PRIVOXY_LISTEN_ADDRESS. + Original patch contributed by pursievro. + - Add client-header-tagger 'listen-address'. + - Include the listen-address in the log message when logging new requests. + Patch contributed by pursievro. + - Turn invalid max-client-connections values into fatal errors. + - The show-status page now shows whether or not dates before 1970 + and after 2038 are expected to be handled properly. + This is mainly useful for Privoxy-Regression-Test but could + also come handy when dealing with time-related support requests. + - On Mac OS X the thread id in log messages are more likely to + be unique now. + - When complaining about missing filters, the filter type is logged + as well. + - A couple of harmless coverity warnings were silenced + (CID #161202, CID #161203, CID #161211). + +- Action file improvements: + - Filtering is disabled for Range requests to let download resumption + and Windows updates work with the default configuration. + - Unblock ".ardmediathek.de/". + Reported by ThTomate in #932. + +- Documentation improvements: + - Add FAQ entry for crashes caused by memory limits. + - Remove obsolete FAQ entry about a bug in PHP 4.2.3. + - Mention the new mailing lists were appropriate. + As the archives have not been migrated, continue to + mention the archives at SF in the contacting section + for now. + - Note that the templates should be adjusted if Privoxy is + running as intercepting proxy without getting all requests. + - A bunch of links were converted to https://. + - Rephrase onion service paragraph to make it more obvious + that Tor is involved and that the whole website (and not + just the homepage) is available as onion service. + - Streamline the "More information" section on the homepage further + by additionally ditching the link to the 'See also' section + of the user manual. The section contains mostly links that are + directly reachable from the homepage already and the rest is + not significant enough to get a link from the homepage. + - Change the add-header{} example to set the DNT header + and use a complete section to make copy and pasting + more convenient. + Add a comment to make it obvious that adding the + header is not recommended for obvious reasons. + Using the DNT header as example was suggested by + Leo Wzukw. + - Streamline the support-and-service template + Instead of linking to the various support trackers + (whose URLs hopefully change soon), link to the + contact section of the user manual to increase the + chances that users actually read it. + - Add a FAQ entry for tainted sockets. + - More sections in the documentation have stable URLs now. + - FAQ: Explain why 'ping config.privoxy.org' is not expected + to reach a local Privoxy installation. + - Note that donations done through Zwiebelfreunde e.V. currently + can't be checked automatically. + - Updated section regarding starting Privoxy under OS X. + - Use dedicated start instructions for FreeBSD and ElectroBSD. + - Removed release instructions for AIX. They haven't been working + for years and unsurprisingly nobody seems to care. + - Removed obsolete reference to the solaris-dist target. + - Updated the release instructions for FreeBSD. + - Removed unfinished release instructions for Amiga OS and HP-UX 11. + - Added a pointer to the Cygwin Time Machine for getting the last release of + Cygwin version 1.5 to use for building Privoxy on Windows. + - Various typos have been fixed. + +- Infrastructure improvements: + - The website is no longer hosted at SourceForge and + can be reached through https now. + - The mailing lists at SourceForge have been deprecated, + you can subscribe to the new ones at: https://lists.privoxy.org/ + - Migrating the remaining services from SourceForge is + work in progress (TODO list item #53). + +- Build system improvements: + - Add configure argument to optimistically redefine FD_SETSIZE + with the intent to change the maximum number of client + connections Privoxy can handle. Only works with some libcs. + Sponsored by Robert Klemme. + - Let the tarball-dist target skip files in ".git". + - Let the tarball-dist target work in cwds other than current. + - Make the 'clean' target faster when run from a git repository. + - Include tools in the generic distribution. + - Let the gen-dist target work in cwds other than current. + - Sort find output that is used for distribution tarballs + to get reproducible results. + - Don't add '-src' to the name of the tar ball generated by the + gen-dist target. The package isn't a source distribution but a + binary package. + While at it, use a variable for the name to reduce the chances + that the various references get out of sync and fix the gen-upload + target which was looking in the wrong directory. + - Add regression-tests.action to the files that are distributed. + - The gen-dist target which was broken since 2002 (r1.92) has been fixed. + - Remove genclspec.sh which has been obsolete since 2009. + - Remove obsolete reference to Redhat spec file. + - Remove the obsolete announce target which has been commented out years ago. + - Let rsync skip files if the checksums match. + +- Privoxy-Regression-Test: + - Add a "Default level offset" directive which can be used to + change the default level by a given value. + This directive affects all tests located after it until the end + of the file or a another "Default level offset" directive is reached. + The purpose of this directive is to make it more convenient to skip + similar tests in a given file without having to remove or disable + the tests completely. + - Let test level 17 depend on FEATURE_64_BIT_TIME_T + instead of FEATURE_PTHREAD which has no direct connection + to the time_t size. + - Fix indentation in perldoc examples. + - Don't overlook directives in the first line of the action file. + - Bump version to 0.7. + - Fix detection of the Privoxy version now that https:// + is used for the website. + +*** Version 3.0.24 stable *** + +- Security fixes (denial of service): + - Prevent invalid reads in case of corrupt chunk-encoded content. + CVE-2016-1982. Bug discovered with afl-fuzz and AddressSanitizer. + - Remove empty Host headers in client requests. + Previously they would result in invalid reads. CVE-2016-1983. + Bug discovered with afl-fuzz and AddressSanitizer. + +- Bug fixes: + - When using socks5t, send the request body optimistically as well. + Previously the request body wasn't guaranteed to be sent at all + and the error message incorrectly blamed the server. + Fixes #1686 reported by Peter Müller and G4JC. + - Fixed buffer scaling in execute_external_filter() that could lead + to crashes. Submitted by Yang Xia in #892. + - Fixed crashes when executing external filters on platforms like + Mac OS X. Reported by Jonathan McKenzie on ijbswa-users@. + - Properly parse ACL directives with ports when compiled with HAVE_RFC2553. + Previously the port wasn't removed from the host and in case of + 'permit-access 127.0.0.1 example.org:80' Privoxy would try (and fail) + to resolve "example.org:80" instead of example.org. + Reported by Pak Chan on ijbswa-users@. + - Check requests more carefully before serving them forcefully + when blocks aren't enforced. Privoxy always adds the force token + at the beginning of the path, but would previously accept it anywhere + in the request line. This could result in requests being served that + should be blocked. For example in case of pages that were loaded with + force and contained JavaScript to create additionally requests that + embed the origin URL (thus inheriting the force prefix). + The bug is not considered a security issue and the fix does not make + it harder for remote sites to intentionally circumvent blocks if + Privoxy isn't configured to enforce them. + Fixes #1695 reported by Korda. + - Normalize the request line in intercepted requests to make rewriting + the destination more convenient. Previously rewrites for intercepted + requests were expected to fail unless $hostport was being used, but + they failed "the wrong way" and would result in an out-of-memory + message (vanilla host patterns) or a crash (extended host patterns). + Reported by "Guybrush Threepwood" in #1694. + - Enable socket lingering for the correct socket. + Previously it was repeatedly enabled for the listen socket + instead of for the accepted socket. The bug was found by + code inspection and did not cause any (reported) issues. + - Detect and reject parameters for parameter-less actions. + Previously they were silently ignored. + - Fixed invalid reads in internal and outdated pcre code. + Found with afl-fuzz and AddressSanitizer. + - Prevent invalid read when loading invalid action files. + Found with afl-fuzz and AddressSanitizer. + - Windows build: Use the correct function to close the event handle. + It's unclear if this bug had a negative impact on Privoxy's behaviour. + Reported by Jarry Xu in #891. + - In case of invalid forward-socks5(t) directives, use the + correct directive name in the error messages. Previously they + referred to forward-socks4t failures. + Reported by Joel Verhagen in #889. + +- General improvements: + - Set NO_DELAY flag for the accepting socket. This significantly reduces + the latency if the operating system is not configured to set the flag + by default. Reported by Johan Sintorn in #894. + - Allow to build with mingw x86_64. Submitted by Rustam Abdullaev in #135. + - Introduce the new forwarding type 'forward-webserver'. + Currently it is only supported by the forward-override{} action and + there's no config directive with the same name. The forwarding type + is similar to 'forward', but the request line only contains the path + instead of the complete URL. + - The CGI editor no longer treats 'standard.action' special. + Nowadays the official "standards" are part of default.action + and there's no obvious reason to disallow editing them through + the cgi editor anyway (if the user decided that the lack of + authentication isn't an issue in her environment). + - Improved error messages when rejecting intercepted requests + with unknown destination. + - A couple of log messages now include the number of active threads. + - Removed non-standard Proxy-Agent headers in HTTP snipplets + to make testing more convenient. + - Include the error code for pcre errors Privoxy does not recognize. + - Config directives with numerical arguments are checked more carefully. + - Privoxy's malloc() wrapper has been changed to prevent zero-size + allocations which should only occur as the result of bugs. + - Various cosmetic changes. + +- Action file improvements: + - Unblock ".deutschlandradiokultur.de/". + Reported by u302320 in #924. + - Add two fast-redirect exceptions for "yandex.ru". + - Disable filter{banners-by-size} for ".plasmaservice.de/". + - Unblock "klikki.fi/adv/". + - Block requests for "resources.infolinks.com/". + Reported by "Black Rider" on ijbswa-users@. + - Block a bunch of criteo domains. + Reported by Black Rider. + - Block "abs.proxistore.com/abe/". + Reported by Black Rider. + - Disable filter{banners-by-size} for ".black-mosquito.org/". + - Disable fast-redirects for "disqus.com/". + +- Documentation improvements: + - FAQ: Explicitly point fingers at ASUS as an example of a + company that has been reported to force malware based on + Privoxy upon its customers. + - Correctly document the action type for a bunch of "multi-value" + actions that were incorrectly documented to be "parameterized". + Reported by Gregory Seidman on ijbswa-users@. + - Fixed the documented type of the forward-override{} action + which is obviously 'parameterized'. + +- Website improvements: + - Users who don't trust binaries served by SourceForge + can get them from a mirror. Migrating away from SourceForge + is planned for 2016 (TODO list item #53). + - The website is now available as onion service + (http://jvauzb4sb3bwlsnc.onion/). + +*** Version 3.0.23 stable *** + +- Bug fixes: + - Fixed a DoS issue in case of client requests with incorrect + chunk-encoded body. When compiled with assertions enabled + (the default) they could previously cause Privoxy to abort(). + Reported by Matthew Daley. CVE-2015-1380. + - Fixed multiple segmentation faults and memory leaks in the + pcrs code. This fix also increases the chances that an invalid + pcrs command is rejected as such. Previously some invalid commands + would be loaded without error. Note that Privoxy's pcrs sources + (action and filter files) are considered trustworthy input and + should not be writable by untrusted third-parties. CVE-2015-1381. + - Fixed an 'invalid read' bug which could at least theoretically + cause Privoxy to crash. So far, no crashes have been observed. + CVE-2015-1382. + - Compiles with --disable-force again. Reported by Kai Raven. + - Client requests with body that can't be delivered no longer + cause pipelined requests behind them to be rejected as invalid. + Reported by Basil Hussain. + +- General improvements: + - If a pcrs command is rejected as invalid, Privoxy now logs + the cause of the problem as text. Previously the pcrs error + code was logged. + - The tests are less likely to cause false positives. + +- Action file improvements: + - '.sify.com/' is no longer blocked. Apparently it is not actually + a pure tracking site (anymore?). Reported by Andrew on ijbswa-users@. + - Unblock banners on .amnesty.de/ which aren't ads. + +- Documentation improvements: + - The 'Would you like to donate?' section now also contains + a "Paypal" address. + - The list of supported operating systems has been updated. + - The existence of the SF support and feature trackers has been + deemphasized because they have been broken for months. + Most of the time the mailing lists still work. + - The claim that default.action updates are sometimes released + on their own has been removed. It hasn't happened in years. + - Explicitly mention that Tor's port may deviate from the default + when using a bundle. Requested by Andrew on ijbswa-users@. + +*** Version 3.0.22 stable *** + +- Bug fixes: + - Fixed a memory leak when rejecting client connections due to + the socket limit being reached (CID 66382). This affected + Privoxy 3.0.21 when compiled with IPv6 support (on most + platforms this is the default). CVE-2015-1030. + - Fixed an immediate-use-after-free bug (CID 66394) and two + additional unconfirmed use-after-free complaints made by + Coverity scan (CID 66391, CID 66376). CVE-2015-1031. + - Actually show the FORCE_PREFIX value on the show-status page. + - Properly deal with Keep-Alive headers with timeout= parameters + If the timeout still can't be parsed, use the configured + timeout instead of preventing the client from keeping the + connection alive. Fixes #3615312/#870 reported by Bernard Guillot. + - Not using any filter files no longer results in warning messages + unless an action file is referencing header taggers or filters. + Reported by Stefan Kurtz in #3614835. + - Fixed a bug that prevented Privoxy from reusing some reusable + connections. Two bit masks with different purpose unintentionally + shared the same bit. + - A couple of additional bugs were discovered by Coverity Scan. + The fixes that are not expected to affect users are not explicitly + mentioned here, for details please have a look at the CVS logs. + +- General improvements: + - Introduced negative tag patterns NO-REQUEST-TAG and NO-RESPONSE-TAG. + They apply if no matching tag is found after parsing client or + server headers. + - Add support for external filters which allow to process the + response body with a script or program written in any language + the platform supports. External filters are enabled with + +external-filter{} after they have been defined in one of the + filter files with a header line starting with "EXTERNAL-FILTER:". + External filter support is experimental, not compiled by default + and known not to work on all platforms. + - Add support for the 'PATCH' method as defined in RFC5789. + - Reject requests with unsupported Expect header values. + Fixes a couple of Co-Advisor tests. + - Normalize the HTTP-version in forwarded requests and responses. + This is an explicit RFC 2616 MUST and RFC 7230 mandates that + intermediaries send their own HTTP-version in forwarded + messages. + - Server 'Keep-Alive' headers are no longer forwarded. From a user's + point of view it doesn't really matter, but RFC 2616 (obsolete) + mandates that the header is removed and this fixes a Co-Advisor + complaint. + - Change declared template file encoding to UTF-8. The templates + already used a subset of UTF-8 anyway and changing the declaration + allows to properly display UTF-8 characters used in the action files. + This change may require existing action files with ISO-8859-1 + characters that aren't valid UTF-8 to be converted to UTF-8. + Requested by Sam Chen in #582. + - Do not pass rejected keep-alive timeouts to the server. It might + not have caused any problems (we know of), but doing the right + thing shouldn't hurt either. + - Let log_error() use its own buffer size #define to make changing + the log buffer size slightly less inconvenient. + - Turned single-threaded into a "proper" toggle directive with arguments. + - CGI templates no longer enforce new windows for some links. + - Remove an undocumented workaround ('HOST' header removal) for + an Apple iTunes bug that according to #729900 got fixed in 2003. + +- Action file improvements: + - The pattern 'promotions.' is no longer being blocked. + Reported by rakista in #3608540. + - Disable fast-redirects for .microsofttranslator.com/. + - Disable filter{banners-by-size} for .dgb-tagungszentren.de/. + - Add adn.speedtest.net as a site-specific unblocker. + Support request #3612908. + - Disable filter{banners-by-size} for creativecommons.org/. + - Block requests to data.gosquared.com/. Reported by cbug in #3613653. + - Unblock .conrad./newsletter/. Reported by David Bo in #3614238. + - Unblock .bundestag.de/. + - Unblock .rote-hilfe.de/. + - Disable fast-redirects for .facebook.com/plugins/like.php. + - Unblock Stackexchange popup URLs that aren't used to serve ads. + Reported by David Wagner in #3615179. + - Disable fast-redirects for creativecommons.org/. + - Unblock .stopwatchingus.info/. + - Block requests for .adcash.com/script/. + Reported by Tyrexionibus in #3615289. + - Disable HTML filters if the response was tagged as JavaScript. + Filtering JavaScript code with filters intended to deal with HTML + is usually a waste of time and, more importantly, may break stuff. + - Use a custom redirect{} for .washingtonpost.com/wp-apps/imrs\.php\?src= + Previously enabling the 'Advanced' settings (or manually enabling + +fast-redirects{}) prevented some images from being loaded properly. + - Unblock "adina*." Fixes #919 reported by Morton A. Goldberg. + - Block '/.*DigiAd'. + - Unblock 'adele*.'. Reported by Adele Lime in #1663. + - Disable banners-by-size for kggp.de/. + +- Filter file improvements & bug fixes: + - Decrease the chances that js-annoyances creates invalid JavaScript. + Submitted by John McGowan on ijbswa-users@. + - Let the msn filter hide 'related' ads again. + - Remove a stray '1' in the 'html-annoyances' filter. + - Prevent img-reorder from messing up img tags with empty src + attributes. Fixes #880 reported by Duncan. + +- Documentation improvements: + - Updated the 'Would you like to donate?' section. + - Note that invalid forward-override{} parameter syntax isn't + detected until the parameter is used. + - Add another +redirect{} example: a shortcut for illumos bugs. + - Make it more obvious that many operating systems support log + rotation out of the box. + - Fixed dead links. Reported by Mark Nelson in #3614557. + - Rephrased the 'Why is the configuration so complicated?' answer + to be slightly less condescending. Anonymously suggested in #3615122. + - Be more explicit about accept-intercepted-requests's lack of MITM support. + - Make 'demoronizer' FAQ entries more generic. + - Add an example hostname to the --pre-chroot-nslookup description. + - Add an example for a host pattern that matches an IP address. + - Rename the 'domain pattern' to 'host pattern' as it may + contain IP addresses as well. + - Recommend forward-socks5t when using Tor. It seems to work fine and + modifying the Tor configuration to profit from it hasn't been necessary + for a while now. + - Add another redirect{} example to stress that redirect loops can + and should be avoided. + - The usual spelling and grammar fixes. Parts of them were + reported by Reuben Thomas in #3615276. + - Mention the PCRS option letters T and D in the filter section. + - Clarify that handle-as-empty-doc-returns-ok is still useful + and will not be removed without replacement. + - Note that security issues shouldn't be reported using the bug tracker. + - Clarify what Privoxy does if both +block{} and +redirect{} apply. + - Removed the obsolete bookmarklets section. + +- Build system improvements: + - Let --with-group properly deal with secondary groups. + Patch submitted by Anatoly Arzhnikov in #3615187. + - Fix web-actions target. + - Add a web-faq target that only updates the FAQ on the webserver. + - Remove already-commented-out non-portable DOSFILTER alternatives. + - Remove the obsolete targets dok-put and dok-get. + - Add a sf-shell target. + +*** Version 3.0.21 stable *** + +- Bug fixes: + - On POSIX-like platforms, network sockets with file descriptor + values above FD_SETSIZE are properly rejected. Previously they + could cause memory corruption in configurations that allowed + the limit to be reached. + - Proxy authentication headers are removed unless the new directive + enable-proxy-authentication-forwarding is used. Forwarding the + headers potentially allows malicious sites to trick the user + into providing them with login information. + Reported by Chris John Riley. + - Compiles on OS/2 again now that unistd.h is only included + on platforms that have it. + +- General improvements: + - The show-status page shows the FEATURE_STRPTIME_SANITY_CHECKS status. + - A couple of assert()s that could theoretically dereference + NULL pointers in debug builds have been relocated. + - Added an LSB info block to the generic start script. + Based on a patch from Natxo Asenjo. + - The max-client-connections default has been changed to 128 + which should be more than enough for most setups. + +- Action file improvements: + - Block rover.ebay./ar.*\&adtype= instead of "/.*\&adtype=" which + caused too man false positives. + Reported by u302320 in #360284, additional feedback from Adam Piggott. + - Unblock '.advrider.com/' and '/.*ADVrider'. + Anonymously reported in #3603636. + - Stop blocking '/js/slider\.js'. + Reported by Adam Piggott in #3606635 and _lvm in #2791160. + +- Filter file improvements: + - Added an iframes filter. + +- Documentation improvements: + - The whole GPLv2 text is included in the user manual now, + so Privoxy can serve it itself and the user can read it + without having to wade through GPLv3 ads first. + - Properly numbered and underlined a couple of section titles + in the config that where previously overlooked due to a flaw + in the conversion script. Reported by Ralf Jungblut. + - Improved the support instruction to hopefully make it harder to + unintentionally provide insufficient information when requesting + support. Previously it wasn't obvious that the information we need + in bug reports is usually also required in support requests. + - Removed documentation about packages that haven't been provided + in years. + +- Privoxy-Regression-Test: + - Only log the test number when not running in verbose mode + The position of the test is rarely relevant and it previously + wasn't exactly obvious which one of the numbers was useful to + repeat the test with --test-number. + +- GNUmakefile improvements: + - Factor generate-config-file out of config-file to make testing + more convenient. + - The clean target now also takes care of patch leftovers. + +*** Version 3.0.20 beta *** + +- Bug fixes: + - Client sockets are now properly shutdown and drained before being + closed. This fixes page truncation issues with clients that aggressively + pipeline data on platforms that otherwise discard already written data. + The issue mainly affected Opera users and was initially reported + by Kevin in #3464439, szotsaki provided additional information to track + down the cause. + - Fix latency calculation for shared connections (disabled by default). + It was broken since their introduction in 2009. The calculated latency + for most connections would be 0 in which case the timeout detection + failed to account for the real latency. + - Reject URLs with invalid port. Previously they were parsed incorrectly and + characters between the port number and the first slash were silently + dropped as shown by curl test 187. + - The default-server-timeout and socket-timeout directives accept 0 as + valid value. + - Fix a race condition on Windows that could cause Privoxy to become + unresponsive after toggling it on or off through the taskbar icon. + Reported by Tim H. in #3525694. + - Fix the compilation on Windows when configured without IPv6 support. + - Fix an assertion that could cause debug builds to abort() in case of + socks5 connection failures with "debug 2" enabled. + - Fix an assertion that could cause debug builds to abort() if a filter + contained nul bytes in the replacement text. + - General improvements: - - New debug log level 65536 which logs all actions that were applied to each - request that Privoxy acts upon. - - New directive client-header-order can be used to forward client headers in - a different order than that in which they arrived. - - New directive tolerate-pipelining can be used to enable client-side - pipelining. If enabled (3.0.20 beta enables it by default), Privoxy will - keep pipelined client requests around to deal with them once the current - request has been served. At the moment this is only done if the current - request is known to have no body. - - New --config-test option lets Privoxy exit after checking whether or not + - Significantly improved keep-alive support for both client and server + connections. + - New debug log level 65536 which logs all actions that were applied to + the request. + - New directive client-header-order to forward client headers in a + different order than the one in which they arrived. + - New directive tolerate-pipelining to allow client-side pipelining. + If enabled (3.0.20 beta enables it by default), Privoxy will keep + pipelined client requests around to deal with them once the current + request has been served. + - New --config-test option to let Privoxy exit after checking whether or not the configuration seems valid. The limitations noted in TODO #22 and #23 - still apply. Logging the problem to the logfile if one is configured and - --no-daemon isn't used could be considered non-intuitive and might also - clobber messages emitted by an already running instance. Based on a patch - by Ramkumar Chinchani. - - Add limit-cookie-lifetime{} action. It can be used to let cookies expire - before the end of the session. limit-cookie-lifetime{0} creates session - cookies and can thus replace the session-cookies-only action in the future. - Idea originally suggested by Rick Sykes in #1049575. - - Increase the maximum number of actions files from 10 to 30. This is set by - the compiler directive MAX_AF_FILES so could always be modified by - recompilation, but the default value was too low since an unused file slot - is pretty inexpensive. - - Significantly improved reuse of open connections. + still apply. Based on a patch by Ramkumar Chinchani. + - New limit-cookie-lifetime{} action to let cookies expire before the end + of the session. Suggested by Rick Sykes in #1049575. + - Increase the hard-coded maximum number of actions and filter files from + 10 to 30 (each). It doesn't significantly affect Privoxy's memory usage + and recompiling wasn't an option for all Privoxy users that reached the + limit. - Add support for chunk-encoded client request bodies. Previously chunk-encoded request bodies weren't guaranteed to be forwarded correctly, so this can also be considered a bug fix although chunk-encoded request @@ -77,68 +568,47 @@ ChangeLog for Privoxy - After preventing the client from pipelining, don't signal keep-alive intentions. When looking at the response headers alone, it previously wasn't obvious from the client's perspective that no additional responses - should be expected. This might improve compatibility with Opera (#3464439). - - Use new drain_and_close_socket() when closing client sockets in serve(). - Hopefully this fixes the page truncation issue reported with Opera in - #3464439. Apparently on some platforms immediately closing a client socket - with both unread and written-but-not-yet-transmitted data may result in the - connection being torn down prematurely, in which case the client ends up - with an incomplete response. To prevent this, drain_and_close_socket() - shuts down our side of the connection (on platforms with shutdown()), - drains the unread data on the socket and finally calls close_socket(). - - Reject URLs with invalid port. Previously they were parsed incorrectly and - characters between the port number and the first slash were silently - dropped as shown by curl test 187. - - Stop considering client sockets tainted after receving a request with body. + should be expected. + - Stop considering client sockets tainted after receiving a request with body. It hasn't been necessary for a while now and unnecessarily causes test failures when using curl's test suite. - Allow HTTP/1.0 clients to signal interest in keep-alive through the Proxy-Connection header. While such client are rare in the real world, it doesn't hurt and couple of curl tests rely on it. - - Only remove duplicated headers when filters are enabled. If they are not it - doesn't cause ill effects and the user might not want it. While at it, - downgrade the removal message to LOG_LEVEL_HEADER to clarify that it's not + - Only remove duplicated Content-Type headers when filters are enabled. + If they are not it doesn't cause ill effects and the user might not want it. + Downgrade the removal message to LOG_LEVEL_HEADER to clarify that it's not an error in Privoxy and is unlikely to cause any problems in general. Anonymously reported in #3599335. - - Accept a default-server-timeout of 0. It's the default after all. - - Accept a socket-timeout value of 0 seconds. Impatience isn't necessarily a - syntax problem. - - Set the socket option SO_LINGER for the client socket in - accept_connection(). This should further reduce the chances of the client - getting an incomplete response, even though Privoxy wrote it in its - entirety to the socket. - - Let serve() wait for keep-alive-timeout seconds for new requests. The - server connection timeout is no longer relevant. - - Improve connection handling when connection sharing is enabled. - - Do not keep the client connection open if it has to be closed to mark the - end of the response. - - Shorten ssplit()'s prototype by removing the last two arguments. We always - want to skip empty fields and ignore leading delimiters, so having - parameters for this only complicates the API. - - Use an enum for the type of the action value. - - Rename action_name's member takes_value to value_type as it isn't used as - boolean. - - Turn family mismatches in match_sockaddr() into fatal errors - - Let enlist_unique_header() verify that the caller didn't pass a header - containing either \r or \n. - - Change the hashes used in load_config() to unsigned int. - That's what hash_string() actually returns and using a potentiallly larger - type is at best useless. - - Use privoxy_tolower() instead of vanilla tolower() with manual casting of - the argument. + - Set the socket option SO_LINGER for the client socket. - Move several variable declarations to the beginning of their code block. - It's how we usually do it and is apparently also required when compiling - with gcc 2.95. Initial patch submitted by Simon South in #3564815. - - Optionally let parse_header_time() sanity check strptime() results before - trusting them. Broken strptime() implementations have caused problems in - the past and the most recent offender seems to be FreeBSD's libc: - http://www.freebsd.org/cgi/query-pr.cgi?pr=173421 - -- Action file improvements: - - Remove the comment that indicated that updated versions of this file are - released on their own. + It's required when compiling with gcc 2.95 which is still used on some + platforms. Initial patch submitted by Simon South in #3564815. + - Optionally try to sanity-check strptime() results before trusting them. + Broken strptime() implementations have caused problems in the past and + the most recent offender seems to be FreeBSD's libc (standards/173421). + - When filtering is enabled, let Range headers pass if the range starts at + the beginning. This should work around (or at least reduce) the video + playback issues with various Apple clients as reported by Duc in #3426305. + - Do not confuse a client hanging up with a connection time out. If a client + closes its side of the connection without sending a request line, do not + send the CLIENT_CONNECTION_TIMEOUT_RESPONSE, but report the condition + properly. - Allow closing curly braces as part of action values as long as they are escaped. + - On Windows, the logfile is now written before showing the GUI error + message which blocks until the user acknowledges it. + Reported by Adriaan in #3593603. + - Remove an unreasonable parameter limit in the CGI interface. The new + parameter limit depends on the memory available and is currently unlikely + to be reachable, due to other limits in both Privoxy and common clients. + Reported by Andrew on ijbswa-users@. + - Decrease the chances of parse failures after requests with unsupported + methods were sent to the CGI interface. + +- Action file improvements: + - Remove the comment that indicated that updated default.action versions + are released on their own. - Block 'optimize.indieclick.com/' and 'optimized-by.rubiconproject.com/' - Unblock 'adjamblog.wordpress.com/' and 'adjamblog.files.wordpress.com/'. Reported by Ryan Farmer in #3496116. @@ -154,40 +624,40 @@ ChangeLog for Privoxy - Block '/openx/www/delivery/'. - Disable fast-redirects for '.googleapis.com/'. - Block 'imp.double.net/'. Reported by David Bo in #3070411. - - Block 'gm-link.com/' whis is used for email tracking. Reported by David Bo - in #1812733. + - Block 'gm-link.com/' which is used for email tracking. + Reported by David Bo in #1812733. - Verify that requests to "bwp." are blocked. URL taken from #1736879 submitted by Francois Marier. - Block '/.*bannerid='. Reported by Adam Piggott in #2975779. - - Block 'cltomedia.info/delivery/' and '.adexprt.com/'. Anonymously reported - in #2965254. + - Block 'cltomedia.info/delivery/' and '.adexprt.com/'. + Anonymously reported in #2965254. - Block 'de17a.com/'. Reported by David Bo in #3061472. - Block 'oskar.tradera.com/'. Reported by David Bo in #3060596. - Block '/scripts/webtrends\.js'. Reported by johnd16 in #3002729. - Block requests for 'pool.*.adhese.com/'. Reported by johnd16 in #3002716. - - Update path pattern for Coremetrics and add tests. Pattern and URLs - submitted by Adam Piggott #3168443. - - Enable +fast-redirects{check-decoded-url} for 'tr.anp.se/'. Reported by - David Bo in #3268832. + - Update path pattern for Coremetrics and add tests. + Pattern and URLs submitted by Adam Piggott #3168443. + - Enable +fast-redirects{check-decoded-url} for 'tr.anp.se/'. + Reported by David Bo in #3268832. - Unblock '.conrad.se/newsletter/banners/'. Reported by David Bo in #3413824. - Block '.tynt.com/'. Reported by Dan Stahlke in #3421767. - Unblock '.bbci.co.uk/radio/'. Reported by Adam Piggott in #3569603. - - Block requests to 'service.maxymiser.net/'. Reported by johnd16 in #3118401 - (with a previous URL). + - Block requests to 'service.maxymiser.net/'. + Reported by johnd16 in #3118401 (with a previous URL). - Disable fast-redirects for Google's "let's pretend your computer is infected" page. - - Unblock '/.*download' to resolve actionsfile feedback #3498129 submitted by - Steven Kolins (soundcloud.com not working). - - Unblock '.wlxrs.com/' to resolve actionsfile feedback #3413827 (hotmail.com - not working) submitted by David Bo. - - Add two unblock patterns for popup radio and TV players. Submitted by Adam - Piggott in #3596089. + - Unblock '/.*download' to resolve actionsfile feedback #3498129. + Submitted by Steven Kolins (soundcloud.com not working). + - Unblock '.wlxrs.com/' which is required by hotmail.com. + Fixes #3413827 submitted by David Bo. + - Add two unblock patterns for popup radio and TV players. + Submitted by Adam Piggott in #3596089. - Filter file improvements & bug fixes: - - Add a referer tagger + - Add a referer tagger. - Reduce the likelihood that the google filter messes up HTML-generating JavaScript. Reported by Zeno Kugy in #3520260. - + - Documentation improvements: - Revised all OS X sections due to new packaging module (OSXPackageBuilder). - Update the list of supported operating systems to clarify that all Windows @@ -210,20 +680,18 @@ ChangeLog for Privoxy - Various grammar and spelling corrections - Add a client-header-tagger{} example for disabling filtering for range requests. - - Correct a URL the "Privoxy with Tor" FAQ + - Correct a URL in the "Privoxy with Tor" FAQ. - Spell 'refresh-tags' correctly. Reported by Don in #3571927. - - Sort manpage options alphabetically + - Sort manpage options alphabetically. - Remove an incorrect sentence in the toggle section. The toggle state - doesn't affect whether or not the Windows version uses the tray icon and - having to toggle Privoxy off to not show the icon makes no sense anyway. + doesn't affect whether or not the Windows version uses the tray icon. Reported by Zeno Kugy in #3596395. - - Add the DNT header to the client-header-order example. - Add new contributors since 3.0.19. - + - Log message improvements: - When stopping to watch a client socket due to pipelining, additionally log the socket number. - - log the client socket and its condition before closing it. This makes it + - Log the client socket and its condition before closing it. This makes it more obvious that the socket actually gets closed and should help when diagnosing problems like #3464439. - In case of SOCKS5 failures, do not explicitly log the server's response. @@ -231,10 +699,8 @@ ChangeLog for Privoxy "debug 32768" anyway. This reverts v1.81 and the follow-up bug fix v1.84. - Relocate the connection-accepted message from listen_loop() to serve(). This way it's printed by the thread that is actually serving the - connection which is nice when grepping for thread ids in log files. While - at it, use an upper-case first character which is more consistent with the - other log messages. - + connection which is nice when grepping for thread ids in log files. + - Code cleanups: - Remove compatibility layer for versions prior to 3.0 since it has been obsolete for more than 10 years now. @@ -265,72 +731,58 @@ ChangeLog for Privoxy - Various data type corrections. - Change visibility of several code segments when compiling without FEATURE_CONNECTION_KEEP_ALIVE enabled for clarity. - - Fix an assertion in pcrs_compile_replacement(), nul bytes are actually - fine. - + - In pcrs_get_delimiter(), do not use delimiters outside the ASCII range. + Fixes a clang complaint. + - Fix an error message in get_last_url() nobody is supposed to see. + Reported by Matthew Fischer in #3507301. + - Fix a typo in the no-zlib-support complaint. Patch submitted by Matthew + Fischer in #3507304. + - Shorten ssplit()'s prototype by removing the last two arguments. We always + want to skip empty fields and ignore leading delimiters, so having + parameters for this only complicates the API. + - Use an enum for the type of the action value. + - Rename action_name's member takes_value to value_type as it isn't used as + boolean. + - Turn family mismatches in match_sockaddr() into fatal errors. + - Let enlist_unique_header() verify that the caller didn't pass a header + containing either \r or \n. + - Change the hashes used in load_config() to unsigned int. That's what + hash_string() actually returns and using a potentially larger type + is at best useless. + - Use privoxy_tolower() instead of vanilla tolower() with manual casting of + the argument. + - Catch ssplit() failures in parse_cgi_parameters(). + - Privoxy-Regression-Test: + - Add an 'Overwrite condition' directive to skip any matching tests before + it. As it has a global scope, using it is more convenient than clowning + around with the Ignore directive. + - Log to STDOUT instead of STDERR. + - Include the Privoxy version in the output. - Various grammar and spelling corrections in documentation and code. - Additional tests for range requests with filtering enabled. - Tests with mostly invalid range request. - - Log to STDOUT instead of STDERR. - Add a couple of hide-if-modified-since{} tests with different date formats. - Cleaned up the format of the regression-tests.action file to match the format of default.action. - Remove the "Copyright" line from print_version(). When using --help, every line of screen space matters and thus shouldn't be wasted on things the user doesn't care about. - - Fix comment typos - - Add an 'Overwrite condition' directive to skip any matching tests before - it. As it has a global scope, using it is more convenient than clowning - around with the Ignore directive. - - Include the Privoxy version in the output. + - Privoxy-Log-Parser: - Improve the --statistics performance by skipping sanity checks for input - that shouldn't affect the results anyway. In my non-scientific benchmarks - this reduces the runtime by about 45%. Also add a --strict-checks option + that shouldn't affect the results anyway. Add a --strict-checks option that enables some of the checks again, just in case anybody cares. - - Accept and highlight: Stopping to watch the client socket. There's already - another request waiting. - - Cleanup variable initialization in print_non_clf_message(). - - Properly highlight the new log messages from get_request_line(). - - Let get_percentage() show 0 of x as 0% even if x is 0 as well. - - Accept and ignore: Enlisting (sorted|left-over) header ... - - Accept the shiny new LOG_LEVEL_ACTIONS. - - Accept and highlight: Closing client socket 5. Keep-alive: 0, Socket - alive: 1. Data available: 0. - - Stop suppressing messages about accepted client connections and highlight - them properly. - - Accept and highlight: Accepted connection from 10.0.0.1 on socket 5. - - Accept and highlight: Continuing buffering server headers from socket 5. - Bytes most recently read: 498. - - Accept and highlight: Client request 4 arrived in time on socket 7. - - Accept and highlight: Closing client socket 8. Keep-alive: 1. Socket - alive: 0. Data available: 0. Configuration file change detected: 0. - Requests received: 11. - - Accept and highlight: Drained 180 bytes before closing socket 6. - - Accept and highlight the extended log message for client sockets. - - Accept and highlight: Tainting client socket 7 due to unread data. - - Accept and highlight: Optimistically sending 318 bytes of client - headers intended for www.privoxy.org. - - Accept and highlight: Client request 8 has been pipelined on socket 7 and - the socket is still alive. - - Accept: There better be a request body. - - Accept and highlight: Shifting 360 pipelined bytes by 360 bytes. - - Accept and highlight: Multiple Content-Type headers detected. Removing and - ignoring: Content-Type: text/html. - + - The distribution of client requests per connection is included in + the --statistic output. + - The --accept-unknown-messages option has been removed and the behavior + is now the default. + - Accept and (mostly) highlight new log messages introduced with + Privoxy 3.0.20. + - uagen: - - Bump generated Firefox version to 16. - -- CGI interface improvements & bug fixes: - - Remove an unreasonable parameter limit in parse_cgi_parameters(). The new - parameter limit depends on the memory available and is currently unlikely - to be reachable, due to other limits in both Privoxy and common clients. - Reported by Andrew on ijbswa-users@. - - Catch ssplit() failures in parse_cgi_parameters(). - - Deal with unsupported methods sent to the CGI pages by discarding any - data following the headers. - + - Bump generated Firefox version to 17. + - GNUmakefile improvements: - The dok-tidy target no longer taints documents with a tidy-mark - Change RA_MODE from 0664 to 0644. Suggested by Markus Dittrich in @@ -342,10 +794,8 @@ ChangeLog for Privoxy - Let w3m itself do the line wrapping for the config file. It works better than fmt as it can honour pre tags causing less unintentional line breaks. - Ditch a pointless '-r' passed to rm to delete files. - - Prevent completely empty lines in configure and try to unfold - unintentional line breaks. - - Let the config-file target optimistically update the original. Most of the - issues are fixed now and it makes diffing with git easier. + - The config-file target now requires less manual intervention and updates + the original config. - Change WDUMP to generate ASCII. Add WDUMP_UTF8 to allow UTF-8 in the AUTHORS file so the names are right. - Stop pretending that lynx and links are supported for the documentation. @@ -353,17 +803,16 @@ ChangeLog for Privoxy - configure improvements: - On Haiku, do not pass -lpthread to the compiler. Haiku's pthreads implementation is contained in its system library, libroot, so no - additional library needs to be searched. Patch submitted by Simon South in - #3564815. + additional library needs to be searched. + Patch submitted by Simon South in #3564815. - Additional Haiku-specific improvements. Disable checks intended for multi-user systems as Haiku is presently single-user. Group Haiku-specific settings in their own section, following the pattern for Solaris, OS/2 and AmigaOS. Add additional library-related settings to remove the need for - providing configure with custom LDFLAGS. Submitted by Simon South in - #3574538. - - Several improvements for clarity, diffability and logic. - - *** Version 3.0.19 Stable *** + providing configure with custom LDFLAGS. + Submitted by Simon South in #3574538. + +*** Version 3.0.19 Stable *** - Bug fixes: - Prevent a segmentation fault when de-chunking buffered content. @@ -947,7 +1396,7 @@ ChangeLog for Privoxy - The scripts in the tools directory treat unknown parameters as fatal errors. -*** Version 3.0.15 Beta *** +*** Version 3.0.15 beta *** - In case of missing server data, no error message is send to the client if the request arrived on a reused connection. The client @@ -993,7 +1442,7 @@ ChangeLog for Privoxy - Privoxy-Regression-Test supports redirect tests. - Privoxy-Log-Parser can gather some connection statistics. -*** Version 3.0.14 Beta *** +*** Version 3.0.14 beta *** - The latency is taken into account when evaluating whether or not to reuse a connection. This should significantly reduce the number of @@ -1028,7 +1477,7 @@ ChangeLog for Privoxy - The configure script respects the $PATH variable when searching for groups and id. -*** Version 3.0.13 Beta *** +*** Version 3.0.13 beta *** - Added IPv6 support. Thanks to Petr Pisar who not only provided the initial patch but also helped a lot with the integration. @@ -1172,7 +1621,7 @@ ChangeLog for Privoxy http://www.fabiankeil.de/sourcecode/privoxy-log-parser/ Documentation is available through perldoc(1). -*** Version 3.0.9 Beta *** +*** Version 3.0.9 beta *** - Added SOCKS5 support (with address resolution done by the SOCKS5 server). Patch provided by Eric M. Hopper. @@ -1286,7 +1735,7 @@ ChangeLog for Privoxy config.txt referenced a nonexisting file - Minor documentation fixes. -*** Version 3.0.7 Beta *** +*** Version 3.0.7 beta *** - Added zlib support to filter content with gzip and deflate encoding. (Patch provided by Wil Mahan) @@ -1442,7 +1891,7 @@ ChangeLog for Privoxy - Changed webinterface default values for hide-user-agent, hide-referrer and set-image-blocker. -*** Version 3.0.5 Beta *** +*** Version 3.0.5 beta *** - Windows version can be installed/started as a service. - Windows icon stays blue when Privoxy is idle, green when busy. @@ -1572,7 +2021,7 @@ ChangeLog for Privoxy user.action. user.action is for personal/local configuration. - The usual many small and miscellaneous bug and security fixes. -*** Version 2.9.14 Beta *** +*** Version 2.9.14 beta *** - Fix Solaris compile problem (gateway.h and filters.h) - Makefile fixes for Solaris, FreeBSD (?) @@ -1586,7 +2035,7 @@ ChangeLog for Privoxy - #include mechansim for common text in templates - Various other minor fixes. -*** Version 2.9.13 Beta *** +*** Version 2.9.13 beta *** - *NEWS*: The project has been renamed to Privoxy! The new name is reflected throughout (file locations, etc). @@ -1598,7 +2047,7 @@ ChangeLog for Privoxy - RPM spec file make over. -*** Version 2.9.12 Beta *** +*** Version 2.9.12 beta *** - **READ**: The default listening PORT is NOW 8118!!! Changed from 8000 due to conflict with NAS (Network Audio Server, whatever that @@ -1635,7 +2084,7 @@ ChangeLog for Privoxy - Various other minor fixes. -*** Version 2.9.11 Beta Changes *** +*** Version 2.9.11 beta Changes *** - Add "session" cookie concept where cookies exist for the life of that browser session only (ie never goes to disk). @@ -1758,8 +2207,8 @@ being a mix of "U.S. English", "U.K. English" and "Irish English". ---------------------------------------------------------------------- -Copyright : Written by and Copyright (C) 2001-2010 the - Privoxy team. http://www.privoxy.org/ +Copyright : Written by and Copyright (C) 2001-2016 the + Privoxy team. https://www.privoxy.org/ Based on the Internet Junkbuster originally written by and Copyright (C) 1997 Anonymous Coders and