]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fix infinite parse loop on partial request reads
authorAmos Jeffries <squid3@treenet.co.nz>
Sun, 18 May 2014 10:36:05 +0000 (03:36 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Sun, 18 May 2014 10:36:05 +0000 (03:36 -0700)
parseHttpRequest() returns NULL on incomplete parse. This case was not
exiting the loop to parse multiple requests. As a result traffic would
only receive a response if the request headers were received entirely
within one read(2) event. Pipelined requests received over multiple hung.

src/client_side.cc

index 5fc5d9c68baeef2dc6f867489b6c271d10f79801..692d61841c2e4227e09b9a6dba31eb294b2cef5b 100644 (file)
@@ -2856,6 +2856,8 @@ ConnStateData::clientParseRequests()
                 break;
             }
         }
+        else // incomplete parse, wait for more data
+            break;
     }
 
     /* XXX where to 'finish' the parsing pass? */