X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=doc%2Fsource%2Fchangelog.sgml;h=0edb8b449c5881f021c857f209d0db98e7e337a6;hb=5ebd34909514f88d4be808a30d58aeee9e90fac5;hp=f0afc1b3a0892b9ef0c8cc3823f0be5d83dfa51a;hpb=30cfc09cf02d40c8ec3848e770413d982315cc08;p=privoxy.git diff --git a/doc/source/changelog.sgml b/doc/source/changelog.sgml index f0afc1b3..0edb8b44 100644 --- a/doc/source/changelog.sgml +++ b/doc/source/changelog.sgml @@ -1,11 +1,9 @@ - - Privoxy 3.0.22 stable is mainly a bug-fix - release, it also has a couple of new features, though. - Note that the first two entries in the ChangeLog below refer to security - issues: - + + Privoxy 3.0.27 stable scales better + in multi-user environments and brings a couple of tuning directives. + Privoxy 3.0.28 stable fixes two regressions + introduced in 3.0.27. + + + Changes in Privoxy 3.0.28 stable: + - + - Bug fixes: + Bug fixes for regressions in 3.0.27: - 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). + Fixed misplaced parentheses. + Reported by David Binderman. - 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). + Changed two regression tests to depend on config directive + enable-remote-toggle instead of FEATURE_TOGGLE. - + + + + + + + Changes in Privoxy 3.0.27 stable: + + + + + General improvements: + - Actually show the FORCE_PREFIX value on the show-status page. + Add a receive-buffer-size directive which can be used to + set the size of the previously statically allocated buffer + in handle_established_connection(). + Increasing the buffer size increases Privoxy's memory usage but + can lower the number of context switches and thereby reduce the + CPU usage and potentially increase the throughput. + This is mostly relevant for fast network connections and + large downloads that don't require filtering. + Sponsored by: Robert Klemme - 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. + Add a listen-backlog directive which specifies the backlog + value passed to listen(). + Sponsored by: Robert Klemme - 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. + Add an enable-accept-filter directive which allows to + toggle accept filter support at run time when compiled + with FEATURE_ACCEPT_FILTER support. + It makes testing more convenient and now that it's + optional we can emit an error message if enabling + the accept filter fails. + Sponsored by: Robert Klemme - Fixed a bug that prevented Privoxy from reusing some reusable - connections. Two bit masks with different purpose unintentionally - shared the same bit. + Add a delay-response{} action. + This is useful to tar pit JavaScript requests that + are endlessly retried in case of blocks. It can also + be used to simulate a slow Internet connection. + Sponsored by: Robert Klemme - 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. + Add a 'trusted-cgi-referrer' directive. + It allows to configure another page or site that can be used + to reach sensitive CGI resources. + Sponsored by: Robert Klemme - - - - - - - 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 a --fuzz mode which exposes Privoxy internals to input + from files or stdout. + Mainly tested with American Fuzzy Lop. For details see: + https://www.fabiankeil.de/talks/fuzzing-on-freebsd/ + This work was partially funded with donations and done + as part of the Privoxy month in 2015. - 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. + Consistently use the U(ngreedy) flag in the 'img-reorder' filter. - Add support for the 'PATCH' method as defined in RFC5789. + listen_loop(): Reuse a single thread attribute object + The object doesn't change and creating a new one for + every thread is a waste of (CPU) time. + Sponsored by: Robert Klemme - Reject requests with unsupported Expect header values. - Fixes a couple of Co-Advisor tests. + Free csp resources in the thread that belongs to the csp instead + of the main thread which has enough on its plate already. + Sponsored by: Robert Klemme - 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. + Improve 'socket timeout reached' message. + Log the timeout that was triggered and downgrade the + log level to LOG_LEVEL_CONNECT to reduce the log noise + with common debug settings. + The timeout isn't necessary the result of an error and + usually merely indicates that Privoxy's socket timeout + is lower than the relevant timeouts used by client and + server. + Sponsored by: Robert Klemme - 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. + Explicitly taint the server socket in case of CONNECT requests. + This doesn't fix any known problems, but makes + some log messages less confusing. - 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. + Let write_pid_file() terminate if the pid file can't be opened. + Logging the issue at info level is unlikely to help. - 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. + log_error(): Reduce the mutex-protected area by not using a + heap-allocated buffer that is shared between all threads. + This increases performance and reduces the latency with + verbose debug settings and multiple concurrent connections. + Sponsored by: Robert Klemme - Let log_error() use its own buffer size #define to make changing - the log buffer size slightly less inconvenient. + Let zalloc() use calloc() if it's available. + In some situations using calloc() can be faster than + malloc() + memset() and it should never be slower. + In the real world the impact of this change is not + expected to be noticeable. + Sponsored by: Robert Klemme - Turned single-threaded into a "proper" toggle directive with arguments. + Never use select() when poll() is available. + On most platforms select() is limited by FD_SETSIZE while + poll() is not. This was a scaling issue for multi-user setups. + Using poll() has no downside other than the usual risk + that code modifications may introduce new bugs that have + yet to be found and fixed. + At least in theory this commit could also reduce the latency + when there are lots of connections and select() would use + "bit fields in arrays of integers" to store file descriptors. + Another side effect is that Privoxy no longer has to stop + monitoring the client sockets when pipelined requests are + waiting but can't be read yet. + This code keeps the select()-based code behind ifdefs for + now but hopefully it can be removed soonish to make the + code more readable. + Sponsored by: Robert Klemme - CGI templates no longer enforce new windows for some links. + Add a 'reproducible-tarball-dist' target. + It's currently separate from the "tarball-dist" target + because it requires a tar implementation with mtree spec + support. + It's far from being perfect and does not enforce a + reproducible mode, but it's better than nothing. - Remove an undocumented workaround ('HOST' header removal) for - an Apple iTunes bug that according to #729900 got fixed in 2003. + Use arc4random() if it's available. + While Privoxy doesn't need high quality pseudo-random numbers + there's no reason not to use them when we can and this silences + a warning emitted by code checkers that can't tell whether or not + the quality matters. - - - - - - - Action file improvements: - + - The pattern 'promotions.' is no longer being blocked. - Reported by rakista in #3608540. + Show the FEATURE_EXTERNAL_FILTERS status on the status page. + Better late than never. Previously a couple of tests weren't + executed as Privoxy-Regression-Test couldn't detect that the + FEATURE_EXTERNAL_FILTERS dependency was satisfied. - Disable fast-redirects for .microsofttranslator.com/. + Ditch FEATURE_IMAGE_DETECT_MSIE. + It's an obsolete workaround we inherited from Junkbuster + and was already disabled by default. + Users that feel the urge to work around issues with + image requests coming from an Internet Explorer version + from more than 15 years ago can still do this using tags. - Disable filter{banners-by-size} for .dgb-tagungszentren.de/. + Consistently use strdup_or_die() instead of strdup() in + cases where allocation failures aren't expected. + Using strdup_or_die() allows to remove a couple of explicit + error checks which slightly reduces the size of the binary. - Add adn.speedtest.net as a site-specific unblocker. - Support request #3612908. + Insert a refresh tag into the /client-tags CGI page when + serving it while a client-specific tag is temporarily enabled. + This makes it less likely that the user ends up + looking at tag state that is out of date. - Disable filter{banners-by-size} for creativecommons.org/. + Use absolute URLs in the client-tag forms. + It's more consistent with the rest of the CGI page + URLs and makes it more convenient to copy the forms + to external pages. - Block requests to data.gosquared.com/. Reported by cbug in #3613653. + cgi_error_disabled(): Use status code 403 and an appropriate response line - Unblock .conrad./newsletter/. Reported by David Bo in #3614238. + Use a dedicated CGI handler to deal with tag-toggle requests + As a result the /client-tags page is now safe to reach without + trusted Referer header which makes bookmarking or linking to + it more convenient. + Finally, refreshing the /client-tags page to show the + current state can no longer unintentionally repeat the + previous toggle request. - Unblock .bundestag.de/. + Don't add a "Connection" header for CONNECT requests. + Explicitly sending "Connection: close" is not necessary and + apparently it causes problems with some forwarding proxies + that will close the connection prematurely. + Reported by Marc Thomas. - Unblock .rote-hilfe.de/. + Fix compiler warnings. + + + + + + Bug fixes: + - Disable fast-redirects for .facebook.com/plugins/like.php. + rfc2553_connect_to(): Properly detect and log when poll() + reached the time out. Previously this was logged as: + Could not connect to [...]: No error: 0. + which isn't very helpful. + Sponsored by: Robert Klemme - Unblock Stackexchange popup URLs that aren't used to serve ads. - Reported by David Wagner in #3615179. + add_tag_for_client(): Set time_to_live properly. + Previously the time_to_live was always set for the first tag. + Attempts to temporarily enable a tag would result in enabling + it permanently unless no tag was enabled already. - Disable fast-redirects for creativecommons.org/. + Revert r1.165 which didn't perform as advertised. + While the idea was to use "https:// when creating links + for the user manual on the website", the actual effect + was to use "https://" when Privoxy was supposed to serve + the user manual itself. + Reported by Yossi Zahn on Privoxy-devel@. - Unblock .stopwatchingus.info/. + socks5_connect(): Fail in case of unsupported address types. + Previously they would not be detected right away and + Privoxy would fail later on with an error message that + didn't make it obvious that the problem was socks-related. + So far, no such problems have actually been reported. - Block requests for .adcash.com/script/. - Reported by Tyrexionibus in #3615289. + socks5_connect(): Properly deal with socks replies that + contain IPv6 addresses. + Previously parts of the reply were left unread and + later on treated as invalid HTTP response data. + Fixes #904 reported by Danny Goossen who also provided + the initial version of this patch. + + + + + + + + Action file improvements: + + + + Unblock 'msdn.microsoft.com/'. + It (presumably) isn't used to serve the kind of ads Privoxy should + block by default but happens to serve lots of pages with URLs that + are likely to result in false positives. + Reported by bugreporter1694 in AF#939. - 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. + Disable gif deanimation for requests tagged with CSS-REQUEST. + The action will ignore content that isn't considered text + anyway and explicitly disabling it makes this more obvious + if "action" debugging (debug 65536) is enabled while + "gif deanimation" debugging (debug 256) isn't. - 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. + Explicitly disable HTML filters for requests with CSS-REQUEST tag. + The filters are unlikely to break CSS files but executing + them without (intentionally) getting any hits is a waste of + cpu time and makes the log more noisy when running with + "debug 64". - Unblock "adina*." Fixes #919 reported by Morton A. Goldberg. + Unblock 'adventofcode.com/'. + Reported by Clint Adams in Debian bug #848211. + Fixes Roland's AF#937. - Block '/.*DigiAd'. + Unblock 'adlibris.com'. + Reported by Wyrex in #935 - Unblock 'adele*.'. Reported by Adele Lime in #1663. + Unblock .golang.org/ - Disable banners-by-size for kggp.de/. + Add fast-redirects exception for '.youtube.com/.*origin=http' @@ -296,28 +410,41 @@ - Filter file improvements & bug fixes: + Privoxy-Log-Parser: - Decrease the chances that js-annoyances creates invalid JavaScript. - Submitted by John McGowan on ijbswa-users@. + Don't gather host and resource statistics if they aren't requested. + While the performance impact seems negligible this significantly + reduces the memory usage if there are lots of requests. + + + + + Bump version as the behaviour (slightly) changed. - Let the msn filter hide 'related' ads again. + Count connection failures as well in statistics mode. + Sponsored by: Robert Klemme - Remove a stray '1' in the 'html-annoyances' filter. + Count connection timeouts as well in statistics mode. + Sponsored by: Robert Klemme - Prevent img-reorder from messing up img tags with empty src - attributes. Fixes #880 reported by Duncan. + Fix an 'uninitialized value' warning when generating + statistics for a log file without response headers. + While privoxy-log-parser was supposed to detect this already, + the check was flawed and the message the user didn't see was + somewhat confusing anyway. + Now the message is less confusing, more helpful and actually printed. + Reported by: Robert Klemme @@ -329,106 +456,131 @@ - Updated the 'Would you like to donate?' section. - - - - - Note that invalid forward-override{} parameter syntax isn't - detected until the parameter is used. + Refer to the git sources instead of CVS. - Add another +redirect{} example: a shortcut for illumos bugs. + Use GNU/Linux when referring to the OS instead of the kernel. - Make it more obvious that many operating systems support log - rotation out of the box. + Add FAQ entry for what to do if editing the config file is access denied. - Fixed dead links. Reported by Mark Nelson in #3614557. + Add brief HTTP/2 FAQ. - Rephrased the 'Why is the configuration so complicated?' answer - to be slightly less condescending. Anonymously suggested in #3615122. + Add a small fuzzing section to the developer documentation. - Be more explicit about accept-intercepted-requests's lack of MITM support. + Add a client-header-tagger{client-ip-address} example. - Make 'demoronizer' FAQ entries more generic. + Stop suggesting that Privoxy is an anonymizing proxy. + The term could lead to Privoxy users overestimating + what it can do on its own (without Tor). - Add an example hostname to the --pre-chroot-nslookup description. + Make it more obvious that SPI accepts Paypal, too. + Currently most donations are made through the Paypal account + managed by Zwiebelfreunde e.V. and a more even distribution + would be useful. - Add an example for a host pattern that matches an IP address. + Suggest to log applying actions as well when reproducing problems. - Rename the 'domain pattern' to 'host pattern' as it may - contain IP addresses as well. + Explicitly mention that Privoxy binaries are built by individuals + on their own systems. Buyer beware! - 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. + Mention the release feed on the homepage. - Add another redirect{} example to stress that redirect loops can - and should be avoided. + Remove a mysterious comment with a GNU FDL link as it isn't + useful and could confuse license scanners. + In May 2002 it was briefly claimed that "this document" was covered + by the GNU FDL. The commit message (r1.5) doesn't explain the motivation + or whether all copyright holders were actually asked and agreed to the + declared license change. + It's thus hard to tell whether or not the license change was legit, + but luckily two days later the "doc license" was "put" "back to GPL" + anyway (r1.6). + At the same time the offending comment with a link to the FDL + (not the GPL) was added for no obvious reason. + Now it's gone again. + + + + + + Regression tests: + - The usual spelling and grammar fixes. Parts of them were - reported by Reuben Thomas in #3615276. + Bump for-privoxy-version to 3.0.27 as we now rely on untrusted + CGI request being rejected with status code 403 (instead of 200). - Mention the PCRS option letters T and D in the filter section. + Update test for /send-stylesheet and add another one - + + + + + + + Templates: + - Clarify that handle-as-empty-doc-returns-ok is still useful - and will not be removed without replacement. + Consistently use https:// when linking to the Privoxy website. - Note that security issues shouldn't be reported using the bug tracker. + Remove SourceForge references in Copyright header. - Clarify what Privoxy does if both +block{} and +redirect{} apply. + Remove a couple of SourceForge references in a comment. + While at it, fix the grammar. - Removed the obsolete bookmarklets section. + Move the site-specific documentation block before the generic one. + While most Privoxy installations don't have a site-specific + documentation block, in cases were it exists it's likely to + be more relevant than the generic one. + Showing it first makes it less likely that users stop reading + before they reach it, especially on pages that don't fit on + the screen. @@ -440,37 +592,65 @@ - Let --with-group properly deal with secondary groups. - Patch submitted by Anatoly Arzhnikov in #3615187. + Prefer openjade to jade. On some systems Jade produces + HTML with unescaped ampersands in URLs. + + + + + Prefer OpenSP to SP to be consistent. - Fix web-actions target. + Have Docbook generated HTML files be straight ASCII. + Dealing with a mixture of ISO-8859 and UTF-8 files is problematic. - Add a web-faq target that only updates the FAQ on the webserver. + Echo the filename to stderr for 'make dok-tidy'. + Make it a bit easier to find errors in docbook generated HTML. - Remove already-commented-out non-portable DOSFILTER alternatives. + Warn when still using select(). - Remove the obsolete targets dok-put and dok-get. + Warn when compiling without calloc(). - Add a sf-shell target. + Make it more obvious that the --with-fdsetsize configure switch + is pointless if poll() is available. + + + + + Remove support for AmigaOS. + + + + + Update windows build system to use supported software. + The cygwin gcc -mno-cygwin option is no longer supported, so + convert the windows build system to use the cygwin cross-compiler + to build "native" code. + + + + + Add --enable-static-linking option for configure + does the same thing as LDFLAGS=-static; ./configure + but nicer than mixing evars and configure options. - +