]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Allow connect retries until a TCP link is successful.
authorAmos Jeffries <squid3@treenet.co.nz>
Wed, 1 Jun 2011 11:57:17 +0000 (23:57 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Wed, 1 Jun 2011 11:57:17 +0000 (23:57 +1200)
src/forward.cc
src/forward.h

index 05d7a73498672e55d5c612b0fbe8c29d76544b1b..a60d208c8385cab7cec0ec1cbb30590f52bc2347 100644 (file)
@@ -440,6 +440,10 @@ FwdState::checkRetry()
     if (flags.dont_retry)
         return false;
 
+    // NP: not yet actually connected anywhere. retry is safe.
+    if (!flags.connected_okay)
+        return true;
+
     if (!checkRetriable())
         return false;
 
@@ -731,6 +735,7 @@ FwdState::connectDone(const Comm::ConnectionPointer &conn, comm_err_t status, in
     }
 #endif
 
+    flags.connected_okay = true;
     dispatch();
 }
 
index 1bc1cddd19d5362f07425a2680e4de1c3f04e3d3..19630e50c6efd836c895d0c0bfb7c3398e519748 100644 (file)
@@ -91,6 +91,7 @@ private:
     } calls;
 
     struct {
+        unsigned int connected_okay:1; ///< TCP link ever opened properly. This affects retry of POST,PUT,CONNECT,etc
         unsigned int dont_retry:1;
         unsigned int forward_completed:1;
     } flags;