Promote the page truncation issue to bug #1
[privoxy.git] / ChangeLog
index 2d64122..8d463df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,43 +4,32 @@ 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.
+  - 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.
+  - Fix a Windows-specific log viewer thread safety issue.
+    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 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.
-    
+  - 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.
@@ -49,8 +38,7 @@ ChangeLog for Privoxy
   - 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.
+    request has been served.
   - New --config-test option lets 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
@@ -61,10 +49,10 @@ ChangeLog for Privoxy
     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.
+  - 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,
@@ -77,15 +65,7 @@ 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().
+    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.
@@ -133,7 +113,14 @@ ChangeLog for Privoxy
     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.
+  - 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.
@@ -187,7 +174,7 @@ ChangeLog for Privoxy
   - 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
@@ -219,7 +206,7 @@ ChangeLog for Privoxy
     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.
@@ -234,7 +221,7 @@ ChangeLog for Privoxy
     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.
-    
+
 - Code cleanups:
   - Remove compatibility layer for versions prior to 3.0 since it has been
     obsolete for more than 10 years now.
@@ -265,9 +252,14 @@ 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.
+  - Update an error message that still tried to print directive_hash as long
+
 - Privoxy-Regression-Test:
   - Various grammar and spelling corrections in documentation and code.
   - Additional tests for range requests with filtering enabled.
@@ -284,6 +276,7 @@ ChangeLog for Privoxy
     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 +311,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 +323,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 +355,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: