From: Fabian Keil <fk@fabiankeil.de>
Date: Mon, 29 Oct 2012 12:04:42 +0000 (+0000)
Subject: Do not keep the client connection open if it has to be closed to mark the end of... 
X-Git-Tag: v_3_0_20~194
X-Git-Url: http://www.privoxy.org/gitweb/%22https:/@default-cgi@edit-actions-add-url-form?a=commitdiff_plain;h=20351819f5964943e705d9fcfddd05772e2495de;p=privoxy.git

Do not keep the client connection open if it has to be closed to mark the end of the response
---

diff --git a/jcc.c b/jcc.c
index f29dea19..169d689e 100644
--- a/jcc.c
+++ b/jcc.c
@@ -1,4 +1,4 @@
-const char jcc_rcs[] = "$Id: jcc.c,v 1.410 2012/10/29 12:00:15 fabiankeil Exp $";
+const char jcc_rcs[] = "$Id: jcc.c,v 1.411 2012/10/29 12:00:50 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/jcc.c,v $
@@ -2631,7 +2631,9 @@ static void serve(struct client_state *csp)
          & RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE)
          && !(csp->flags & CSP_FLAG_SERVER_SOCKET_TAINTED)
          && (csp->cfd != JB_INVALID_SOCKET)
-         && (csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE);
+         && (csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE)
+         && ((csp->flags & CSP_FLAG_SERVER_CONTENT_LENGTH_SET)
+            || (csp->flags & CSP_FLAG_CHUNKED));
 
       if (!(csp->flags & CSP_FLAG_CRUNCHED)
          && (csp->server_connection.sfd != JB_INVALID_SOCKET))
diff --git a/parsers.c b/parsers.c
index f0219eee..3d607da7 100644
--- a/parsers.c
+++ b/parsers.c
@@ -1,4 +1,4 @@
-const char parsers_rcs[] = "$Id: parsers.c,v 1.258 2012/10/21 12:58:03 fabiankeil Exp $";
+const char parsers_rcs[] = "$Id: parsers.c,v 1.259 2012/10/23 10:18:19 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/parsers.c,v $
@@ -3704,7 +3704,9 @@ static jb_err server_proxy_connection_adder(struct client_state *csp)
 
    if ((csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE)
     && !(csp->flags & CSP_FLAG_SERVER_SOCKET_TAINTED)
-    && !(csp->flags & CSP_FLAG_SERVER_PROXY_CONNECTION_HEADER_SET))
+    && !(csp->flags & CSP_FLAG_SERVER_PROXY_CONNECTION_HEADER_SET)
+    && ((csp->flags & CSP_FLAG_SERVER_CONTENT_LENGTH_SET)
+       || (csp->flags & CSP_FLAG_CHUNKED)))
    {
       log_error(LOG_LEVEL_HEADER, "Adding: %s", proxy_connection_header);
       err = enlist(csp->headers, proxy_connection_header);