Properly align the 3.0.19 header so the SGML converters notices it
[privoxy.git] / ChangeLog
index 8d463df..fb01b17 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -14,46 +14,40 @@ ChangeLog for Privoxy
     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.
-  - Fix a Windows-specific log viewer thread safety issue.
+  - 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.
-  - 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 the --disable-ipv6-support configure option for the Windows platform.
-  - 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 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
+  - 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 lets Privoxy exit after checking whether or not
+  - 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.
+    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.
-  - Significantly improved reuse of open connections.
   - 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
@@ -66,66 +60,46 @@ ChangeLog for Privoxy
     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.
-  - 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.
     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
-  - 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.
+    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.
-
-- Action file improvements:
-  - Remove the comment that indicated that updated versions of this file are
-    released on their own.
   - 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.
@@ -141,37 +115,37 @@ 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/' whis 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.
 
@@ -197,20 +171,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.
@@ -218,9 +190,7 @@ 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
@@ -258,71 +228,51 @@ ChangeLog for Privoxy
     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
+  - 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.
+  - 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
@@ -335,10 +285,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.
@@ -346,17 +294,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.
+    providing configure with custom LDFLAGS.
+    Submitted by Simon South in #3574538.
 
-  *** Version 3.0.19 Stable ***
+*** Version 3.0.19 Stable ***
 
 - Bug fixes:
   - Prevent a segmentation fault when de-chunking buffered content.