X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=doc%2Fsource%2Fchangelog.sgml;h=2381d86890e5de09b20b11f62f1d6db2c7a6fd00;hp=8230831e2f49486e85e1e609fa667de74bbbd37c;hb=033dcac636ca75689a18ada916f25c1bef5e8e97;hpb=e03b2db8ef7bd0138b41b1ab6f4361cf1710e217 diff --git a/doc/source/changelog.sgml b/doc/source/changelog.sgml index 8230831e..2381d868 100644 --- a/doc/source/changelog.sgml +++ b/doc/source/changelog.sgml @@ -24,535 +24,605 @@ --> - Privoxy 3.0.26 stable is a bug-fix release - for the previously released 3.0.25 beta which introduced client-specific - tags and included a couple of minor improvements. + Privoxy 3.0.27 stable scales better + in multi-user environments and brings a couple of tuning directives. - Bug fixes: - + General improvements: - Fixed crashes with "listen-addr :8118" (SF Bug #902). - The regression was introduced in 3.0.25 beta and reported - by Marvin Renich in Debian bug #834941. - + 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 + - - - - - General improvements: - - - Log when privoxy is toggled on or off via cgi interface. + Add a listen-backlog directive which specifies the backlog + value passed to listen(). + Sponsored by: Robert Klemme - Highlight the "Info: Now toggled " on/off log message - in the Windows log viewer. + 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 - Highlight the loading actions/filter file log message - in the Windows log viewer. + 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 - Mention client-specific tags on the toggle page as a - potentionally more appropriate alternative. + 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 - - - - - - Documentation improvements: - - + - Update download section on the homepage. - The downloads are available from the website now. + 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 sponsor FAQ. + Consistently use the U(ngreedy) flag in the 'img-reorder' filter. - Remove obsolete reference to mailing lists hosted at SourceForge. + 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 - Update the "Before the Release" section of the developer manual. + 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 - - - - - - Infrastructure improvements: - - + - Add perl script to generate an RSS feed for the packages - Submitted by "Unknown". + 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 - - - - - - Build system improvements: - - + - strptime.h: fix a compiler warning about ambiguous else. + Explicitly taint the server socket in case of CONNECT requests. + This doesn't fix any known problems, but makes + some log messages less confusing. - configure.in: Check for Docbook goo on the BSDs as well. + Let write_pid_file() terminate if the pid file can't be opened. + Logging the issue at info level is unlikely to help. - GNUMakefile.in: Let the dok-user target remove temporary files. + 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 - - - - - - - Changes between Privoxy 3.0.25 beta - and the previous release: - - - - - - Bug fixes: - - + - 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. + 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 - 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. + 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 - - - - - - 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. + 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. - 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. + 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. - Add client-header-tagger 'listen-address'. + 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. - Include the listen-address in the log message when logging new requests. - Patch contributed by pursievro. + 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. - Turn invalid max-client-connections values into fatal errors. + 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. - 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. + 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. - On Mac OS X the thread id in log messages are more likely to - be unique now. + 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. - When complaining about missing filters, the filter type is logged - as well. + cgi_error_disabled(): Use status code 403 and an appropriate response line - A couple of harmless coverity warnings were silenced - (CID #161202, CID #161203, CID #161211). + 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. - - - - - - Action file improvements: - - + - Filtering is disabled for Range requests to let download resumption - and Windows updates work with the default configuration. + 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 ".ardmediathek.de/". - Reported by ThTomate in #932. + Fix compiler warnings. - + + - Documentation improvements: - + Bug fixes: - Add FAQ entry for crashes caused by memory limits. + 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 - Remove obsolete FAQ entry about a bug in PHP 4.2.3. + 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. - 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. + 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@. - Note that the templates should be adjusted if Privoxy is - running as intercepting proxy without getting all requests. + 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. - A bunch of links were converted to https://. + 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: + - 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. + 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. - 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. + 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. - 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. + 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". - 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. + Unblock 'adventofcode.com/'. + Reported by Clint Adams in Debian bug #848211. + Fixes Roland's AF#937. - Add a FAQ entry for tainted sockets. + Unblock 'adlibris.com'. + Reported by Wyrex in #935 - More sections in the documentation have stable URLs now. + Unblock .golang.org/ - FAQ: Explain why 'ping config.privoxy.org' is not expected - to reach a local Privoxy installation. + Add fast-redirects exception for '.youtube.com/.*origin=http' - + + + + + + + Privoxy-Log-Parser: + - Note that donations done through Zwiebelfreunde e.V. currently - can't be checked automatically. + 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. - Updated section regarding starting Privoxy under OS X. + Bump version as the behaviour (slightly) changed. - Use dedicated start instructions for FreeBSD and ElectroBSD. + Count connection failures as well in statistics mode. + Sponsored by: Robert Klemme - Removed release instructions for AIX. They haven't been working - for years and unsurprisingly nobody seems to care. + Count connection timeouts as well in statistics mode. + Sponsored by: Robert Klemme - Removed obsolete reference to the solaris-dist target. + 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 - + + + + + + + Documentation improvements: + - Updated the release instructions for FreeBSD. + Refer to the git sources instead of CVS. - Removed unfinished release instructions for Amiga OS and HP-UX 11. + Use GNU/Linux when referring to the OS instead of the kernel. - 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. + Add FAQ entry for what to do if editing the config file is access denied. - Various typos have been fixed. + Add brief HTTP/2 FAQ. - - - - - - Infrastructure improvements: - - + - The website is no longer hosted at SourceForge and - can be reached through https now. + Add a small fuzzing section to the developer documentation. - The mailing lists at SourceForge have been deprecated, - you can subscribe to the new ones at: https://lists.privoxy.org/ + Add a client-header-tagger{client-ip-address} example. - Migrating the remaining services from SourceForge is - work in progress (TODO list item #53). + 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). - - - - - - 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. + 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. - Let the tarball-dist target skip files in ".git". + Suggest to log applying actions as well when reproducing problems. - Let the tarball-dist target work in cwds other than current. + Explicitly mention that Privoxy binaries are built by individuals + on their own systems. Buyer beware! - Make the 'clean' target faster when run from a git repository. + Mention the release feed on the homepage. - Include tools in the generic distribution. + 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: + - Let the gen-dist target work in cwds other than current. + 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). - Sort find output that is used for distribution tarballs - to get reproducible results. + Update test for /send-stylesheet and add another one - + + + + + + + Templates: + - 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. + Consistently use https:// when linking to the Privoxy website. - Add regression-tests.action to the files that are distributed. + Remove SourceForge references in Copyright header. - The gen-dist target which was broken since 2002 (r1.92) has been fixed. + Remove a couple of SourceForge references in a comment. + While at it, fix the grammar. - Remove genclspec.sh which has been obsolete since 2009. + 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. + + + + + + + + Build system improvements: + + + + Prefer openjade to jade. On some systems Jade produces + HTML with unescaped ampersands in URLs. - Remove obsolete reference to Redhat spec file. + Prefer OpenSP to SP to be consistent. - Remove the obsolete announce target which has been commented out years ago. + Have Docbook generated HTML files be straight ASCII. + Dealing with a mixture of ISO-8859 and UTF-8 files is problematic. - Let rsync skip files if the checksums match. + Echo the filename to stderr for 'make dok-tidy'. + Make it a bit easier to find errors in docbook generated HTML. - - - - - - 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. + Warn when still using select(). - 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. + Warn when compiling without calloc(). - Fix indentation in perldoc examples. + Make it more obvious that the --with-fdsetsize configure switch + is pointless if poll() is available. - Don't overlook directives in the first line of the action file. + Remove support for AmigaOS. - Bump version to 0.7. + 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. - Fix detection of the Privoxy version now that https:// - is used for the website. + Add --enable-static-linking option for configure + does the same thing as LDFLAGS=-static; ./configure + but nicer than mixing evars and configure options. +