Clarify the entry about the handling of duplicated Content-Type headers
[privoxy.git] / ChangeLog
index ef74d54..1400f44 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
@@ -23,6 +29,9 @@ ChangeLog for Privoxy
     difference for debug builds.
   - Fix an assertion that could cause debug builds to abort() if a filter
     contained nul bytes in the replacement text.
+  - 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.
 
 - General improvements:
   - New debug log level 65536 which logs all actions that were applied to each
@@ -32,8 +41,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 +52,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,27 +68,16 @@ 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.