Relocate CERT_INFO_PREFIX to ssl.c
[privoxy.git] / doc / source / changelog.sgml
index 6c36990..6ca1058 100644 (file)
@@ -1,11 +1,9 @@
 <!--
- File        :  $Source: /cvsroot/ijbswa/current/doc/source/p-authors.sgml,v $
+ File        :  doc/source/changelog.sgml
 
  Purpose     :  Entity included in other project documents.
 
- $Id: p-authors.sgml,v 2.49 2013/01/10 11:39:05 fabiankeil Exp $
-
- Copyright (C) 2013 Privoxy Developers http://www.privoxy.org/
+ Copyright (C) 2013-2018 Privoxy Developers https://www.privoxy.org/
  See LICENSE.
 
  ======================================================================
   user-manual
 -->
 
-<para>
- <application>Privoxy 3.0.20</application> is a beta release.
- The changes since 3.0.19 stable are:
-</para>
 
 <!--
  The SGML ChangeLog can be generated with: utils/changelog2doc.pl ChangeLog
 -->
+
 <para>
+  <application>Privoxy 3.0.29</application> fixes a couple of memory
+  leaks and introduces https inspection which allows to filter encrypted
+  requests and responses.
+</para>
+ <para>
+  Changes in <application>Privoxy 3.0.29</application> stable:
+ </para>
  <itemizedlist>
-    <listitem>
-   <para>
-    Bug fixes:
-    <itemizedlist>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      The default-server-timeout and socket-timeout directives accept 0 as
-      valid value.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Fix the compilation on Windows when configured without IPv6 support.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Fix an assertion that could cause debug builds to abort() in case of
-      socks5 connection failures with "debug 2" enabled.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Fix an assertion that could cause debug builds to abort() if a filter
-      contained nul bytes in the replacement text.
-     </para>
-     </listitem>
-    </itemizedlist>
-   </para>
-  </listitem>
   <listitem>
    <para>
-    General improvements:
+    Security/Reliability:
     <itemizedlist>
     <listitem>
      <para>
-      Significantly improved keep-alive support for both client and server
-      connections.
+      Fixed memory leaks when a response is buffered and the buffer
+      limit is reached or Privoxy is running out of memory.
+      Commits bbd53f1010b and 4490d451f9b. OVE-20201118-0001.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      New debug log level 65536 which logs all actions that were applied to
-      the request.
+      Fixed a memory leak in the show-status CGI handler when
+      no action files are configured. Commit c62254a686.
+      OVE-20201118-0002.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      New directive client-header-order to forward client headers in a
-      different order than the one in which they arrived.
+      Fixed a memory leak in the show-status CGI handler when
+      no filter files are configured. Commit 1b1370f7a8a.
+      OVE-20201118-0003.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      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.
+      Fixes a memory leak when client tags are active.
+      Commit 245e1cf32. OVE-20201118-0004.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      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. Based on a patch by Ramkumar Chinchani.
+      Fixed a memory leak if multiple filters are executed
+      and the last one is skipped due to a pcre error.
+      Commit 5cfb7bc8fe. OVE-20201118-0005.
      </para>
     </listitem>
     <listitem>
      <para>
-      New limit-cookie-lifetime{} action to let cookies expire before the end
-      of the session. Suggested by Rick Sykes in #1049575.
+      Prevent an unlikely dereference of a NULL-pointer that
+      could result in a crash if accept-intercepted-requests
+      was enabled, Privoxy failed to get the request destination
+      from the Host header and a memory allocation failed.
+      Commit 7530132349. CID 267165. OVE-20201118-0006.
      </para>
     </listitem>
     <listitem>
      <para>
-      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.
+      Fixed memory leaks in the client-tags CGI handler when
+      client tags are configured and memory allocations fail.
+      Commit cf5640eb2a. CID 267168. OVE-20201118-0007.
      </para>
     </listitem>
     <listitem>
      <para>
-      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
-      bodies aren't commonly used in the real world.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Add support for Tor's optimistic-data SOCKS extension, which can reduce the
-      latency for requests on newly created connections. Currently only the
-      headers are sent optimistically and only if the client request has already
-      been read completely which rules out requests with large bodies.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Set the socket option SO_LINGER for the client socket.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Move several variable declarations to the beginning of their code block.
-      It's required when compiling with gcc 2.95 which is still used on some
-      platforms. Initial patch submitted by Simon South in #3564815.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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).
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Allow closing curly braces as part of action values as long as they are
-      escaped.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      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@.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Decrease the chances of parse failures after requests with unsupported
-      methods were sent to the CGI interface.
+      Fixed memory leaks in the show-status CGI handler when memory
+      allocations fail. Commit 064eac5fd0 and commit fdee85c0bf3.
+      CID 305233. OVE-20201118-0008.
      </para>
      </listitem>
     </itemizedlist>
   </listitem>
   <listitem>
    <para>
-    Action file improvements:
+    General improvements:
     <itemizedlist>
     <listitem>
      <para>
-      Remove the comment that indicated that updated default.action versions
-      are released on their own.
+      Added experimental https inspection support which allows to filter
+      https traffic. To enable it, install MbedTLS and configure with
+      --with-mbedtls, or install OpenSSL or LibreSSL and configure
+      with --with-openssl.
+      Afterwards configure the directives in section 7 of the
+      config file and enable the +https-inspection action.
+      Initial MbedTLS-based code contributed by Vaclav Svec,
+      initial OpenSSL support contributed by Maxim Antonov.
+      With help from Nedzad Hrnjica and Ho+ Ho+ Ho+.
+      Integration and improvements sponsored by Robert Klemme.
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'optimize.indieclick.com/' and 'optimized-by.rubiconproject.com/'
+      pcrs: Request JIT compilation if it's supported and
+      the filter isn't dynamic. This can speed up filtering.
      </para>
     </listitem>
     <listitem>
      <para>
-      Unblock 'adjamblog.wordpress.com/' and 'adjamblog.files.wordpress.com/'.
-      Reported by Ryan Farmer in #3496116.
+      Added support for Brotli decompression.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Unblock '/.*Bugtracker'. Reported by pwhk in #3522341.
+      Added FEATURE_EXTENDED_STATISTICS to gather statistics for
+      block reasons and filter executions. To enable it, configure
+      with --enable-extended-statistics and visit
+      http://config.privoxy.org/show-status.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Add test URLs for '.freebsd.org' and '.watson.org'.
+      Use the IP_FREEBIND socket option, if defined. This allows
+      Privoxy to bind to not-yet assigned IP addresses which is
+      useful in failover environments.
+      Patch by Sam Varshavchik.
      </para>
     </listitem>
     <listitem>
      <para>
-      Unblock '.urbandictionary.com/popular'.
+      Allow to use extended host patterns and vanilla host patterns
+      at the same time by prefixing extended host patterns with
+      "PCRE-HOST-PATTERN:". To enable this, configure with
+      --enable-pcre-host-patterns.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Block '.adnxs.com/'.
+      Added "Cross-origin resource sharing" (CORS) support.
+      This allows to access Privoxy's CGI interface via JavaScript from
+      another domain (white-listed with the new cors-allowed-origin directive).
+      Based on a patch by Nedzad Hrnjica.
+      Sponsored by: Robert Klemme.
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'farm.plista.com/widgetdata.php'.
+      Add SOCKS5 username/password support.
+      Based on a patch by Sam, improved by Ivan Romanov.
+      Closes Patch#141 and solves TODO#105.
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'rotation.linuxnewmedia.com/'.
+      Bump the maximum number of action and filter files
+      to 100 each.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'reklamy.sfd.pl/'. Reported by kacperdominik in #3399948.
+      Fixed handling of filters with "split-large-forms 1"
+      when using the CGI editor.
+      Reported by withoutname in #921.
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'g.adspeed.net/'.
+      Better detect a mismatch of connection details when
+      figuring out whether or not a connection can be reused.
      </para>
     </listitem>
     <listitem>
      <para>
-      Unblock 'websupport.wdc.com/'. Reported by Adam Piggot in #3577851.
+      Don't send a "Connection failure" message instead of the
+      "DNS failure" message.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Block '/openx/www/delivery/'.
+      Let LOG_LEVEL_REQUEST log all requests. Previously unencrypted
+      requests were only logged with LOG_LEVEL_REQUEST when they weren't
+      crunched (in which case they were logged with LOG_LEVEL_CRUNCH).
+      This was documented behaviour, but logging all requests seems more useful.
      </para>
     </listitem>
     <listitem>
      <para>
-      Disable fast-redirects for '.googleapis.com/'.
+      Fixed locking around localtime() and gmtime().
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'imp.double.net/'. Reported by David Bo in #3070411.
+      Removed OS/2 support. We haven't provided OS/2 packages in years,
+      it complicated the code and it depended on a fallback snprintf()
+      implementation which is GPLv2 only.
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'gm-link.com/' which is used for email tracking.
-      Reported by David Bo in #1812733.
+      Remove the fallback snprintf() implementation
+      Now that OS/2 support is gone we no longer need it.
      </para>
     </listitem>
     <listitem>
      <para>
-      Verify that requests to "bwp." are blocked. URL taken from #1736879
-      submitted by Francois Marier.
+      Fixed a bunch of format specifiers log messages.
      </para>
     </listitem>
     <listitem>
      <para>
-      Block '/.*bannerid='. Reported by Adam Piggott in #2975779.
+      Added a missing apostrophe in the 'More Privoxy' menu.
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'cltomedia.info/delivery/' and '.adexprt.com/'.
-      Anonymously reported in #2965254.
+      Explicitly prevent use of FEATURE_CONNECTION_SHARING
+      without FEATURE_CONNECTION_KEEP_ALIVE. It makes no sense
+      and does not compile anyway.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'de17a.com/'. Reported by David Bo in #3061472.
+      Fix build without FEATURE_CONNECTION_KEEP_ALIVE.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Block 'oskar.tradera.com/'. Reported by David Bo in #3060596.
+      Downgrade the 'Graceful termination requested' message
+      to LOG_LEVEL_INFO as it isn't an error.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Block '/scripts/webtrends\.js'. Reported by johnd16 in #3002729.
+      decompress_iob(): Downgrade the no-content message to LOG_LEVEL_RE_FILTER
+      While at it, fix a typo in a comment.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Block requests for 'pool.*.adhese.com/'. Reported by johnd16 in #3002716.
+      Fixed a couple of cppcheck warnings.
      </para>
     </listitem>
     <listitem>
      <para>
-      Update path pattern for Coremetrics and add tests.
-      Pattern and URLs submitted by Adam Piggott #3168443.
+      Rename LOG_LEVEL_GPC to LOG_LEVEL_REQUEST.
+      Only the shadow knows what "GPC" is supposed to stand for.
      </para>
     </listitem>
     <listitem>
      <para>
-      Enable +fast-redirects{check-decoded-url} for 'tr.anp.se/'.
-      Reported by David Bo in #3268832.
+      Remove SourceForge references in copyright headers.
      </para>
     </listitem>
     <listitem>
      <para>
-      Unblock '.conrad.se/newsletter/banners/'. Reported by David Bo in #3413824.
+      Upgrade a bunch of links to the homepage to https://.
      </para>
     </listitem>
     <listitem>
      <para>
-      Block '.tynt.com/'. Reported by Dan Stahlke in #3421767.
+      Add 'no-brotli-accepted' filter which prevents the
+      use of Brotli compression.
      </para>
     </listitem>
     <listitem>
      <para>
-      Unblock '.bbci.co.uk/radio/'. Reported by Adam Piggott in #3569603.
+      Changed license for pcrs to GPLv2+ after getting the
+      permission from Andreas. This allows to redistribute
+      Privoxy under the GPLv3 which is required when linking
+      to future mbedTLS versions which are expected to be
+      licensed under the Apache 2.0 license only.
      </para>
     </listitem>
     <listitem>
      <para>
-      Block requests to 'service.maxymiser.net/'.
-      Reported by johnd16 in #3118401 (with a previous URL).
+      Updated a bunch of tests that have to expect status code 403
+      now after r1.168/070e904afa5.
      </para>
     </listitem>
     <listitem>
      <para>
-      Disable fast-redirects for Google's "let's pretend your computer is
-      infected" page.
+      Lowercase the host name in the request line.
      </para>
     </listitem>
     <listitem>
      <para>
-      Unblock '/.*download' to resolve actionsfile feedback #3498129.
-      Submitted by Steven Kolins (soundcloud.com not working).
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Unblock '.wlxrs.com/' which is required by hotmail.com.
-      Fixes #3413827 submitted by David Bo.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Add two unblock patterns for popup radio and TV players.
-      Submitted by Adam Piggott in #3596089.
-     </para>
-     </listitem>
-    </itemizedlist>
-   </para>
-  </listitem>
-  <listitem>
-   <para>
-    Filter file improvements & bug fixes:
-    <itemizedlist>
-    <listitem>
-     <para>
-      Add a referer tagger.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Reduce the likelihood that the google filter messes up HTML-generating
-      JavaScript. Reported by Zeno Kugy in #3520260.
+      Only set SOURCE_DATE_EPOCH if it's not already set so
+      distributions can overwrite it through the environment.
      </para>
      </listitem>
     </itemizedlist>
   </listitem>
   <listitem>
    <para>
-    Documentation improvements:
+    Documentation changes:
     <itemizedlist>
     <listitem>
      <para>
-      Revised all OS X sections due to new packaging module (OSXPackageBuilder).
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Update the list of supported operating systems to clarify that all Windows
-      versions after 95 are expected to work and note that the platform-specific
-      code for AmigaOS and QNX currently isn't maintained.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Update 'Signals' section, the only explicitly handled signals are SIGINT,
-      SIGTERM and SIGHUP.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Add Haiku to the list of operating systems on which Privoxy is known to
-      run.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Add DragonFly to the list of BSDs on which Privoxy is known to run.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Removed references to redhat-specific documentation set since it no longer
-      exists.
+      Explain that Privoxy has to be distributed under the
+      GPLv3 (or later) when linked with an MbedTLS version
+      that is licensed under the Apache 2.0 license.
      </para>
     </listitem>
     <listitem>
      <para>
-      Removed references to building PDFs since we no longer do so.
+      Import the GNU GPLv3 and include it the user manual.
      </para>
     </listitem>
     <listitem>
      <para>
-      Multiple listen-address directives are supported since 3.0.18, correct the
-      documentation to say so.
+      Clarify FEATURE_FORCE_LOAD's description. It allows to bypass
+      blocking not filtering and only does it if blocks aren't enforced.
+      Reported by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Remove bogus section about long and short being preferable to int.
+      FAQ: Remove Zwiebelfreunde e.V. from the list of fiduciary sponsors
+      As of 2021 they no longer handle donations for foreign organisations
+      due to lack of resources.
      </para>
     </listitem>
     <listitem>
      <para>
-      Corrected some Internet JunkBuster references to Privoxy.
+      FAQ: Remove an obsolete comment with a link to the long-gone PDF manual.
      </para>
     </listitem>
     <listitem>
      <para>
-      Removed references to www.junkbusters.com since it is no longer
-      maintained. Reported by Angelina Matson.
+      FAQ: Add a link to the TODO list.
      </para>
     </listitem>
     <listitem>
      <para>
-      Various grammar and spelling corrections
+      FAQ: Change the sponsor amounts to USD slightly rounding the
+      converted amounts up to get simple numbers.
+      Receiving USD is apparently easier for SPI and SPI is
+      preferred by sponsors as they can send invoices.
      </para>
     </listitem>
     <listitem>
      <para>
-      Add a client-header-tagger{} example for disabling filtering for range
-      requests.
+      Advertise the client-tags CGI page in the user manual.
      </para>
     </listitem>
     <listitem>
      <para>
-      Correct a URL in the "Privoxy with Tor" FAQ.
+      Stop advertising the show-version CGI page which no longer exists.
      </para>
     </listitem>
     <listitem>
      <para>
-      Spell 'refresh-tags' correctly. Reported by Don in #3571927.
+      Add yet another reason why +prevent-compression may cause problems.
      </para>
     </listitem>
     <listitem>
      <para>
-      Sort manpage options alphabetically.
+      Don't claim that contributors need ssh. It's only needed for committers.
      </para>
     </listitem>
     <listitem>
      <para>
-      Remove an incorrect sentence in the toggle section. The toggle state
-      doesn't affect whether or not the Windows version uses the tray icon.
-      Reported by Zeno Kugy in #3596395.
+      Replace obsolete CVS instructions with Git instructions.
      </para>
     </listitem>
     <listitem>
      <para>
-      Add new contributors since 3.0.19.
+      Remove an obsolete comment
      </para>
      </listitem>
     </itemizedlist>
   </listitem>
   <listitem>
    <para>
-    Log message improvements:
+    Config file changes:
     <itemizedlist>
     <listitem>
      <para>
-      When stopping to watch a client socket due to pipelining, additionally log
-      the socket number.
+      Change the suggested default-server-timeout to 5 to match the
+      suggested keep-alive-timeout. Otherwise using the defaults would
+      result in Privoxy reducing the default-server-timeout and logging
+      an error message.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      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.
+      Update the 'debug 1' description.
      </para>
     </listitem>
     <listitem>
      <para>
-      In case of SOCKS5 failures, do not explicitly log the server's response.
-      It hasn't helped so far and the response can already be logged by enabling
-      "debug 32768" anyway. This reverts v1.81 and the follow-up bug fix v1.84.
+      Add a missing 'client-specific-tag' directive.
      </para>
     </listitem>
     <listitem>
      <para>
-      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.
+      Comment out trusted-cgi-referer pointing to example.org.
      </para>
      </listitem>
     </itemizedlist>
   </listitem>
   <listitem>
    <para>
-    Code cleanups:
+    Action file improvements:
     <itemizedlist>
     <listitem>
      <para>
-      Remove compatibility layer for versions prior to 3.0 since it has been
-      obsolete for more than 10 years now.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Remove the ijb_isupper() and ijb_tolower() macros from parsers.c since
-      they aren't used in this file.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Removed the 'Functions declared include:' comment sections since they tend
-      to be incomplete, incorrect and out of date and the benefit seems
-      questionable.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Various comment grammar and comprehensibility improvements.
+      Block requests to /(.*/)?piwik\.php
      </para>
     </listitem>
     <listitem>
      <para>
-      Remove a pointless fflush() call in chat(). Flushing all streams pretty
-      much all the time for no obvious reason is ridiculous.
+      Block requests to .connectaserver.de/
      </para>
     </listitem>
     <listitem>
      <para>
-      Relocate ijb_isupper()'s definition to project.h and get the ijb_tolower()
-      definition from there, too.
+      Block requests to pixel.inforsea.com/
      </para>
     </listitem>
     <listitem>
      <para>
-      Relocate ijb_isdigit()'s definition to project.h.
+      Block requests to t.vi-serve.com/
      </para>
     </listitem>
     <listitem>
      <para>
-      Rename ijb_foo macros to privoxy_foo.
+      Block requests to .ioam.de/
      </para>
     </listitem>
     <listitem>
      <para>
-      Add malloc_or_die() which will allow to simplify code paths where malloc()
-      failures don't need to be handled gracefully.
+      Block requests to t.9gag.com/img.gif
      </para>
     </listitem>
     <listitem>
      <para>
-      Add strdup_or_die() which will allow to simplify code paths where strdup()
-      failures don't need to be handled gracefully.
+      Block requests to .pixel.parsely.com/ as image
      </para>
     </listitem>
     <listitem>
      <para>
-      Replace strdup() calls with strdup_or_die() calls where it's safe and
-      simplifies the code.
+      Block requests to pixel.wp.com/
      </para>
     </listitem>
     <listitem>
      <para>
-      Fix white-space around parentheses.
+      Disable fast-redirects for .librarything.com/
      </para>
     </listitem>
     <listitem>
      <para>
-      Add missing white-space behind if's and the following parentheses.
+      Disable fast-redirects for issue.freebsdfoundation.org/
      </para>
     </listitem>
     <listitem>
      <para>
-      Unwrap a memcpy() call in resolve_hostname_to_ip().
+      Disable fast-redirects for .twitter.com/.*origin=http
      </para>
     </listitem>
     <listitem>
      <para>
-      Declare pcrs_get_delimiter()'s delimiters[] static const.
+      Unblock belco24.de/
      </para>
     </listitem>
     <listitem>
      <para>
-      Various optimisations to remove dead code and merge inefficient code
-      structures for improved clarity, performance or code compactness.
+      Add fast-redirects exception for .wikipedia.org/
      </para>
     </listitem>
     <listitem>
      <para>
-      Various data type corrections.
+      Add fast-redirects exception for oss-fuzz.com/
      </para>
     </listitem>
     <listitem>
      <para>
-      Change visibility of several code segments when compiling without
-      FEATURE_CONNECTION_KEEP_ALIVE enabled for clarity.
+      Disable fast-redirects for .consensu.org/delivery/pixel\.php
+      and block the requests as image instead
      </para>
     </listitem>
     <listitem>
      <para>
-      In pcrs_get_delimiter(), do not use delimiters outside the ASCII range.
-      Fixes a clang complaint.
+      Unblock .adbinstaller.com/
+      Reported by lvm in #942.
      </para>
     </listitem>
     <listitem>
      <para>
-      Fix an error message in get_last_url() nobody is supposed to see.
-      Reported by Matthew Fischer in #3507301.
+      Unblock .adbshell.com
+      Reported by lvm in #942.
      </para>
     </listitem>
     <listitem>
      <para>
-      Fix a typo in the no-zlib-support complaint. Patch submitted by Matthew
-      Fischer in #3507304.
+      Unblock .tagesschau.de/
      </para>
     </listitem>
     <listitem>
      <para>
-      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.
+      Disable fast-redirects for collector.githubapp.com/
+      and block requests to it as image instead
      </para>
     </listitem>
     <listitem>
      <para>
-      Use an enum for the type of the action value.
+      Unblock 'ada*.'
      </para>
     </listitem>
     <listitem>
      <para>
-      Rename action_name's member takes_value to value_type as it isn't used as
-      boolean.
+      Add fast-redirects{} exception for sourcepoint.vice.com/
      </para>
     </listitem>
     <listitem>
      <para>
-      Turn family mismatches in match_sockaddr() into fatal errors.
+      Unblock adaway.org/
+      Reported by DRS David Soft in AF#945.
      </para>
     </listitem>
     <listitem>
      <para>
-      Let enlist_unique_header() verify that the caller didn't pass a header
-      containing either \r or \n.
+      Change two block reasons that previously were the same.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      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.
+      Added a +delay-response{} test.
      </para>
     </listitem>
     <listitem>
      <para>
-      Use privoxy_tolower() instead of vanilla tolower() with manual casting of
-      the argument.
-     </para>
-    </listitem>
-    <listitem>
-     <para>
-      Catch ssplit() failures in parse_cgi_parameters().
+      Updated the location of the development version
+      of default.action.master.
      </para>
      </listitem>
     </itemizedlist>
   </listitem>
   <listitem>
    <para>
-    Privoxy-Regression-Test:
+    Privoxy-Log-Parser:
     <itemizedlist>
     <listitem>
      <para>
-      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.
+      Added a --keep-date option to keep the date in highlighted messages.
      </para>
     </listitem>
     <listitem>
      <para>
-      Log to STDOUT instead of STDERR.
+      Highlight new log messages.
      </para>
     </listitem>
     <listitem>
      <para>
-      Include the Privoxy version in the output.
+      Make gather_loglevel_clf_stats() more tolerant. While at it,
+      count all CLF messages as requests, even if the request is invalid.
      </para>
     </listitem>
     <listitem>
      <para>
-      Various grammar and spelling corrections in documentation and code.
+      Only show HTTP version distribution if at least one version has been detected.
      </para>
     </listitem>
     <listitem>
      <para>
-      Additional tests for range requests with filtering enabled.
+      Only show crunch statistics if crunches were detected.
      </para>
     </listitem>
     <listitem>
      <para>
-      Tests with mostly invalid range request.
+      Warn if the request counts differ.
      </para>
     </listitem>
     <listitem>
      <para>
-      Add a couple of hide-if-modified-since{} tests with different date formats.
+      Generate statistics if the log only contains LOG_LEVEL_CLF messages
+      so it can be used with vanilla webserver logs.
+      Previously Privoxy-specific "Request:" messages were required.
      </para>
     </listitem>
     <listitem>
      <para>
-      Cleaned up the format of the regression-tests.action file to match the
-      format of default.action.
+      Align the client-HTTP-version distribution like other distributions
      </para>
     </listitem>
     <listitem>
      <para>
-      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.
+      Bump version to 0.9.1
      </para>
-     </listitem>
-    </itemizedlist>
-   </para>
-  </listitem>
-  <listitem>
-   <para>
-    Privoxy-Log-Parser:
-    <itemizedlist>
+    </listitem>
     <listitem>
      <para>
-      Improve the --statistics performance by skipping sanity checks for input
-      that shouldn't affect the results anyway. Add a --strict-checks option
-      that enables some of the checks again, just in case anybody cares.
+      Include status code distribution in the stats.
      </para>
     </listitem>
     <listitem>
      <para>
-      The distribution of client requests per connection is included in
-      the --statistic output.
+      Let the statistics include the size of the content Privoxy
+      transferred excluding HTTP headers.
      </para>
     </listitem>
     <listitem>
      <para>
-      The --accept-unknown-messages option has been removed and the behavior
-      is now the default.
+      Get with the program and expect all requests to be logged with LOG_LEVEL_REQUEST.
+      It's no longer necessary to count both LOG_LEVEL_REQUEST and
+      LOG_LEVEL_CRUNCH messages to get the total number of requests.
      </para>
     </listitem>
     <listitem>
      <para>
-      Accept and (mostly) highlight new log messages introduced with
-      Privoxy 3.0.20.
+      Leverage the LOG_LEVEL_CLF message to gather statistics that where
+      previously taken from LOG_LEVEL_HEADER lines. This results in less
+      confusing results if https inspection is enabled in which case there
+      are two LOG_LEVEL_HEADER lines with request lines.
+      Sponsored by: Robert Klemme
      </para>
-     </listitem>
-    </itemizedlist>
-   </para>
-  </listitem>
-  <listitem>
-   <para>
-    uagen:
-    <itemizedlist>
+    </listitem>
+    <listitem>
+     <para>
+      Properly highlight the filter results message. Previously a brace got lost.
+     </para>
+    </listitem>
     <listitem>
      <para>
-      Bump generated Firefox version to 17.
+      Prefer the number of CLF lines to get the total number of requests
+      as it works with older Privoxy versions as well.
      </para>
      </listitem>
     </itemizedlist>
   </listitem>
   <listitem>
    <para>
-    GNUmakefile improvements:
+    Privoxy-Regression-Test:
     <itemizedlist>
     <listitem>
      <para>
-      The dok-tidy target no longer taints documents with a tidy-mark
+      Turn curl's globbing mode off so we can allow more characters in URLs.
      </para>
     </listitem>
     <listitem>
      <para>
-      Change RA_MODE from 0664 to 0644. Suggested by Markus Dittrich in
-      #3505445.
+      Allow '[' and ']' in URLs.
      </para>
     </listitem>
     <listitem>
      <para>
-      Remove tidy's clean flag as it changes the scope of attributes.
-      Link-specific colors end up being applied to all text. Reported by Adam
-      Piggott in #3569551.
+      Include the action file when complaining about missing Sticky Actions.
      </para>
     </listitem>
     <listitem>
      <para>
-      Leave it up to the user whether or not smart tags are inserted.
+      Fix a sentence in the documentation.
      </para>
     </listitem>
     <listitem>
      <para>
-      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.
+      Bump version to 0.7.1
      </para>
-    </listitem>
-    <listitem>
-     <para>
-      Ditch a pointless '-r' passed to rm to delete files.
-     </para>
-    </listitem>
+     </listitem>
+    </itemizedlist>
+   </para>
+  </listitem>
+  <listitem>
+   <para>
+    url-pattern-translator:
+    <itemizedlist>
     <listitem>
      <para>
-      The config-file target now requires less manual intervention and updates
-      the original config.
+      Detect a couple of pattern prefixes case-insensitively.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Change WDUMP to generate ASCII. Add WDUMP_UTF8 to allow UTF-8 in the
-      AUTHORS file so the names are right.
+      Skip CLIENT-TAG patterns.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      Stop pretending that lynx and links are supported for the documentation.
-     </para>
-     </listitem>
-    </itemizedlist>
-   </para>
-  </listitem>
-  <listitem>
-   <para>
-    configure improvements:
-    <itemizedlist>
-    <listitem>
-     <para>
-      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.
+      Skip patterns that have already been converted.
+      It should now be safe to "convert" a file multiple times.
+      Sponsored by: Robert Klemme
      </para>
     </listitem>
     <listitem>
      <para>
-      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.
+      Add the new 'PCRE-HOST-PATTERN:' prefix.
+      Sponsored by: Robert Klemme
      </para>
      </listitem>
     </itemizedlist>
    </para>
   </listitem>
  </itemizedlist>
-</para>
+