Promote the page truncation issue to bug #1
[privoxy.git] / ChangeLog
index ef74d54..8d463df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,12 @@ ChangeLog for Privoxy
 *** Version 3.0.20 Beta ***
 
 - Bug fixes:
+  - 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
@@ -32,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
@@ -44,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,
@@ -60,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.