]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Only set Keep-alive once
authorAmos Jeffries <squid3@treenet.co.nz>
Tue, 20 Jan 2009 08:36:00 +0000 (21:36 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Tue, 20 Jan 2009 08:36:00 +0000 (21:36 +1300)
Enact the TODO of same.

Some re-arrangement has been done to move setting cases which need
functions to be evaluated a lower priority than those which can be set
purely from flags.

src/client_side_reply.cc

index 6e21f2a7d748cca46f6541d0b10a17e7961ec388..89f28fba94f2f0c541f1554ea8c42902e8199f3d 100644 (file)
@@ -1354,35 +1354,30 @@ clientReplyContext::buildReplyHeader()
 #endif
 
     /* Check whether we should send keep-alive */
-    // TODO: disable proxy_keepalive only once
-
-    if (reply->bodySize(request->method) < 0) {
-        debugs(88, 3, "clientBuildReplyHeader: can't keep-alive, unknown body size" );
-        request->flags.proxy_keepalive = 0;
-    }
-
-    if (fdUsageHigh()&& !request->flags.must_keepalive) {
-        debugs(88, 3, "clientBuildReplyHeader: Not many unused FDs, can't keep-alive");
-        request->flags.proxy_keepalive = 0;
-    }
-
     if (!Config.onoff.error_pconns && reply->sline.status >= 400 && !request->flags.must_keepalive) {
         debugs(33, 3, "clientBuildReplyHeader: Error, don't keep-alive");
         request->flags.proxy_keepalive = 0;
     }
-
-    if (!Config.onoff.client_pconns && !request->flags.must_keepalive)
+    else if (!Config.onoff.client_pconns && !request->flags.must_keepalive) {
+        debugs(33, 2, "clientBuildReplyHeader: Connection Keep-Alive not requested by admin or client");
         request->flags.proxy_keepalive = 0;
-
-    if (request->flags.proxy_keepalive && shutting_down) {
+    }
+    else if (request->flags.proxy_keepalive && shutting_down) {
         debugs(88, 3, "clientBuildReplyHeader: Shutting down, don't keep-alive.");
         request->flags.proxy_keepalive = 0;
     }
-
-    if (request->flags.connection_auth && !reply->keep_alive) {
+    else if (request->flags.connection_auth && !reply->keep_alive) {
         debugs(33, 2, "clientBuildReplyHeader: Connection oriented auth but server side non-persistent");
         request->flags.proxy_keepalive = 0;
     }
+    else if (reply->bodySize(request->method) < 0) {
+        debugs(88, 3, "clientBuildReplyHeader: can't keep-alive, unknown body size" );
+        request->flags.proxy_keepalive = 0;
+    }
+    else if (fdUsageHigh()&& !request->flags.must_keepalive) {
+        debugs(88, 3, "clientBuildReplyHeader: Not many unused FDs, can't keep-alive");
+        request->flags.proxy_keepalive = 0;
+    }
 
 
     /* Append VIA */