From: Amos Jeffries Date: Wed, 1 Jun 2011 11:57:17 +0000 (+1200) Subject: Allow connect retries until a TCP link is successful. X-Git-Tag: take08~55^2~124^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0bbd553285480f633c2325b1453c44a3eb955966;p=thirdparty%2Fsquid.git Allow connect retries until a TCP link is successful. --- diff --git a/src/forward.cc b/src/forward.cc index 05d7a73498..a60d208c83 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -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(); } diff --git a/src/forward.h b/src/forward.h index 1bc1cddd19..19630e50c6 100644 --- a/src/forward.h +++ b/src/forward.h @@ -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;