Minor changes for the code cleanups
[privoxy.git] / ChangeLog
index 2d64122..cec112e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,68 +4,50 @@ ChangeLog for Privoxy
 *** Version 3.0.20 Beta ***
 
 - Bug fixes:
-  - Fix --disable-ipv6-support compile option for the Windows platform.
-  - Attempt to work around (or at least reduce the) video playback issues with
-    various Apple clients as reported in #3426305. In client_range(), let
-    headers pass if the range starts at the beginning.
-  - In pcrs_get_delimiter(), do not use delimiters ouside the ASCII range.
-    Fixes a clang complaint.
-  - In socks5_connect(), do not try to print a negative number of socks
-    response bytes if the read() for the socks5 negotiation failed
-    completely. It's an API violation and can trigger an assert() in debug
-    builds with "debug 2" enabled. Except for the assert(), log_error()
-    already handled negative %N values gracefully so this commit only makes a
-    difference for debug builds.
-  - Fix a Windows-specific log viewer thread safety issue, as reported by Tim
-    H. in #3525694.
-  - Do not confuse a client hanging up with a connection time out. If a client
-    closes its side of the connection without sending a request line, do not
-    send the CLIENT_CONNECTION_TIMEOUT_RESPONSE, but report the condition
-    properly.
-  - Fix latency calculation for shared connections; broken since a regression
-    in 2009. The calculated latency for most connections would be 0 due to
-    remember_connection() always putting the timestamps in the first slot.
-  - Let fatal_error() write to the logfile right away, before showing the
-    Windows-specific error message which blocks until the user acknowledges it,
-    thus complicating automatic error detection. Reported by Adriaan in
-    #3593603.
-  - Fix an error message in get_last_url() nobody is supposed to see. Reported
-    by Matthew Fischer in #3507301.
-  - Fix a typo in the no-zlib-support complaint. Patch submitted by Matthew
-    Fischer in #3507304.
-  - Update an error message that still tried to print directive_hash as long
-  - Let server_set_cookie() stay silent when the cookie isn't modified. It
-    previously would claim to have created a session cookie after letting a
-    session cookie pass unmodified.
-  - Make any_loaded_file_changed() more reliable. Using the timestamps from. If
-    an action or filter file is reloaded the timestamps aren't updated so
-    any_loaded_file_changed() continued to report file changes.
-    
+  - Client sockets are now properly shutdown and drained before being
+    closed. This fixes page truncation issues with clients that aggressively
+    pipeline data on platforms that otherwise discard already written data.
+    The issue mainly affected Opera users and was initially reported
+    by Kevin in #3464439, szotsaki provided additional information to track
+    down the cause.
+  - Fix latency calculation for shared connections (disabled by default).
+    It was broken since their introduction in 2009. The calculated latency
+    for most connections would be 0 in which case the timeout detection
+    failed to account for the real latency.
+  - Reject URLs with invalid port. Previously they were parsed incorrectly and
+    characters between the port number and the first slash were silently
+    dropped as shown by curl test 187.
+  - The default-server-timeout and socket-timeout directives accept 0 as
+    valid value.
+  - Fix a race condition on Windows that could cause Privoxy to become
+    unresponsive after toggling it on or off through the taskbar icon.
+    Reported by Tim H. in #3525694.
+  - Fix the compilation on Windows when configured without IPv6 support.
+  - Fix an assertion that could cause debug builds to abort() in case of
+    socks5 connection failures with "debug 2" enabled.
+  - Fix an assertion that could cause debug builds to abort() if a filter
+    contained nul bytes in the replacement text.
+
 - General improvements:
-  - New debug log level 65536 which logs all actions that were applied to each
-    request that Privoxy acts upon.
-  - New directive client-header-order can be used to forward client headers in
-    a different order than that in which they arrived.
-  - New directive tolerate-pipelining can be used to enable client-side
-    pipelining. If enabled (3.0.20 beta enables it by default), Privoxy will
-    keep pipelined client requests around to deal with them once the current
-    request has been served. At the moment this is only done if the current
-    request is known to have no body.
-  - New --config-test option lets Privoxy exit after checking whether or not
+  - Significantly improved keep-alive support for both client and server
+    connections.
+  - New debug log level 65536 which logs all actions that were applied to
+    the request.
+  - New directive client-header-order to forward client headers in a
+    different order than the one in which they arrived.
+  - New directive tolerate-pipelining to allow client-side pipelining.
+    If enabled (3.0.20 beta enables it by default), Privoxy will keep
+    pipelined client requests around to deal with them once the current
+    request has been served.
+  - New --config-test option to let Privoxy exit after checking whether or not
     the configuration seems valid. The limitations noted in TODO #22 and #23
-    still apply. Logging the problem to the logfile if one is configured and
-    --no-daemon isn't used could be considered non-intuitive and might also
-    clobber messages emitted by an already running instance. Based on a patch
-    by Ramkumar Chinchani.
-  - Add limit-cookie-lifetime{} action. It can be used to let cookies expire
-    before the end of the session. limit-cookie-lifetime{0} creates session
-    cookies and can thus replace the session-cookies-only action in the future.
-    Idea originally suggested by Rick Sykes in #1049575.
-  - Increase the maximum number of actions files from 10 to 30. This is set by
-    the compiler directive MAX_AF_FILES so could always be modified by
-    recompilation, but the default value was too low since an unused file slot
-    is pretty inexpensive.
-  - Significantly improved reuse of open connections.
+    still apply. Based on a patch by Ramkumar Chinchani.
+  - New limit-cookie-lifetime{} action to let cookies expire before the end
+    of the session. Suggested by Rick Sykes in #1049575.
+  - Increase the hard-coded maximum number of actions and filter files from
+    10 to 30 (each). It doesn't significantly affect Privoxy's memory usage
+    and recompiling wasn't an option for all Privoxy users that reached the
+    limit.
   - Add support for chunk-encoded client request bodies. Previously
     chunk-encoded request bodies weren't guaranteed to be forwarded correctly,
     so this can also be considered a bug fix although chunk-encoded request
@@ -77,68 +59,42 @@ ChangeLog for Privoxy
   - After preventing the client from pipelining, don't signal keep-alive
     intentions. When looking at the response headers alone, it previously
     wasn't obvious from the client's perspective that no additional responses
-    should be expected. This might improve compatibility with Opera (#3464439).
-  - Use new drain_and_close_socket() when closing client sockets in serve().
-    Hopefully this fixes the page truncation issue reported with Opera in
-    #3464439. Apparently on some platforms immediately closing a client socket
-    with both unread and written-but-not-yet-transmitted data may result in the
-    connection being torn down prematurely, in which case the client ends up
-    with an incomplete response. To prevent this, drain_and_close_socket()
-    shuts down our side of the connection (on platforms with shutdown()),
-    drains the unread data on the socket and finally calls close_socket().
-  - Reject URLs with invalid port. Previously they were parsed incorrectly and
-    characters between the port number and the first slash were silently
-    dropped as shown by curl test 187.
+    should be expected.
   - 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:
+    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:
     http://www.freebsd.org/cgi/query-pr.cgi?pr=173421
-    
-- Action file improvements:
-  - Remove the comment that indicated that updated versions of this file are
-    released on their own.
+  - When filtering is enabled, let Range headers pass if the range starts at
+    the beginning. This should work around (or at least reduce ) the video
+    playback issues with various Apple clients as reported by Duc in #3426305.
+  - Do not confuse a client hanging up with a connection time out. If a client
+    closes its side of the connection without sending a request line, do not
+    send the CLIENT_CONNECTION_TIMEOUT_RESPONSE, but report the condition
+    properly.
   - Allow closing curly braces as part of action values as long as they are
     escaped.
+  - On Windows, the logfile is now written before showing the GUI error
+    message which blocks until the user acknowledges it.
+    Reported by Adriaan in #3593603.
+
+- Action file improvements:
+  - Remove the comment that indicated that updated default.action versions
+    are released on their own.
   - Block 'optimize.indieclick.com/' and 'optimized-by.rubiconproject.com/'
   - Unblock 'adjamblog.wordpress.com/' and 'adjamblog.files.wordpress.com/'.
     Reported by Ryan Farmer in #3496116.
@@ -154,40 +110,40 @@ ChangeLog for Privoxy
   - Block '/openx/www/delivery/'.
   - Disable fast-redirects for '.googleapis.com/'.
   - Block 'imp.double.net/'. Reported by David Bo in #3070411.
-  - Block 'gm-link.com/' whis is used for email tracking. Reported by David Bo
-    in #1812733.
+  - Block 'gm-link.com/' 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.
-    
+
 - Documentation improvements:
   - Revised all OS X sections due to new packaging module (OSXPackageBuilder).
   - Update the list of supported operating systems to clarify that all Windows
@@ -210,20 +166,18 @@ ChangeLog for Privoxy
   - Various grammar and spelling corrections
   - Add a client-header-tagger{} example for disabling filtering for range
     requests.
-  - Correct a URL the "Privoxy with Tor" FAQ
+  - Correct a URL in the "Privoxy with Tor" FAQ.
   - Spell 'refresh-tags' correctly. Reported by Don in #3571927.
-  - Sort manpage options alphabetically
+  - Sort manpage options alphabetically.
   - Remove an incorrect sentence in the toggle section. The toggle state
-    doesn't affect whether or not the Windows version uses the tray icon and
-    having to toggle Privoxy off to not show the icon makes no sense anyway.
+    doesn't affect whether or not the Windows version uses the tray icon.
     Reported by Zeno Kugy in #3596395.
-  - Add the DNT header to the client-header-order example.
   - Add new contributors since 3.0.19.
-    
+
 - Log message improvements:
   - When stopping to watch a client socket due to pipelining, additionally log
     the socket number.
-  - log the client socket and its condition before closing it. This makes it
+  - Log the client socket and its condition before closing it. This makes it
     more obvious that the socket actually gets closed and should help when
     diagnosing problems like #3464439.
   - In case of SOCKS5 failures, do not explicitly log the server's response.
@@ -231,10 +185,8 @@ ChangeLog for Privoxy
     "debug 32768" anyway. This reverts v1.81 and the follow-up bug fix v1.84.
   - Relocate the connection-accepted message from listen_loop() to serve().
     This way it's printed by the thread that is actually serving the
-    connection which is nice when grepping for thread ids in log files. While
-    at it, use an upper-case first character which is more consistent with the
-    other log messages.
-    
+    connection which is nice when grepping for thread ids in log files.
+
 - Code cleanups:
   - Remove compatibility layer for versions prior to 3.0 since it has been
     obsolete for more than 10 years now.
@@ -265,9 +217,27 @@ ChangeLog for Privoxy
   - Various data type corrections.
   - Change visibility of several code segments when compiling without
     FEATURE_CONNECTION_KEEP_ALIVE enabled for clarity.
-  - Fix an assertion in pcrs_compile_replacement(), nul bytes are actually
-    fine.
-    
+  - In pcrs_get_delimiter(), do not use delimiters ouside the ASCII range.
+    Fixes a clang complaint.
+  - Fix an error message in get_last_url() nobody is supposed to see.
+    Reported by Matthew Fischer in #3507301.
+  - Fix a typo in the no-zlib-support complaint. Patch submitted by Matthew
+    Fischer in #3507304.
+  - Shorten ssplit()'s prototype by removing the last two arguments. We always
+    want to skip empty fields and ignore leading delimiters, so having
+    parameters for this only complicates the API.
+  - Use an enum for the type of the action value.
+  - Rename action_name's member takes_value to value_type as it isn't used as
+    boolean.
+  - Turn family mismatches in match_sockaddr() into fatal errors.
+  - Let enlist_unique_header() verify that the caller didn't pass a header
+    containing either \r or \n.
+  - Change the hashes used in load_config() to unsigned int. That's what
+    hash_string() actually returns and using a potentiallly larger type
+    is at best useless.
+  - Use privoxy_tolower() instead of vanilla tolower() with manual casting of
+    the argument.
+
 - Privoxy-Regression-Test:
   - Various grammar and spelling corrections in documentation and code.
   - Additional tests for range requests with filtering enabled.
@@ -279,11 +249,12 @@ ChangeLog for Privoxy
   - 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
+  - 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
@@ -318,10 +289,10 @@ ChangeLog for Privoxy
   - 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.
-    
+
 - 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
@@ -330,7 +301,7 @@ ChangeLog for Privoxy
   - Catch ssplit() failures in parse_cgi_parameters().
   - Deal with unsupported methods sent to the CGI pages by discarding any
     data following the headers.
-    
+
 - GNUmakefile improvements:
   - The dok-tidy target no longer taints documents with a tidy-mark
   - Change RA_MODE from 0664 to 0644. Suggested by Markus Dittrich in
@@ -362,7 +333,7 @@ ChangeLog for Privoxy
     providing configure with custom LDFLAGS. Submitted by Simon South in
     #3574538.
   - Several improvements for clarity, diffability and logic.
-  
+
   *** Version 3.0.19 Stable ***
 
 - Bug fixes: