diff options
author | Oz Linden <oz@lindenlab.com> | 2015-02-20 18:06:21 -0500 |
---|---|---|
committer | Oz Linden <oz@lindenlab.com> | 2015-02-20 18:06:21 -0500 |
commit | 7ba82a6409e4fc096407f0247b084950d1e3c14a (patch) | |
tree | c78a08e30fcbf8463a3c53433e3c91edb8c63292 /indra/llcorehttp/_httpoprequest.cpp | |
parent | 0d6872e1f5cf96b0489bde722015627aa3ca76a9 (diff) | |
parent | eb5d634ef97a638f59785c507f7211674edef3ea (diff) |
merge changes for BUG-7387
Diffstat (limited to 'indra/llcorehttp/_httpoprequest.cpp')
-rwxr-xr-x | indra/llcorehttp/_httpoprequest.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp index fbbb1614fb..7482a89dac 100755 --- a/indra/llcorehttp/_httpoprequest.cpp +++ b/indra/llcorehttp/_httpoprequest.cpp @@ -623,8 +623,23 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service) // a handwave but bump the transfer timeout up by the pipelining // depth to give some room. // + // BUG-7698, BUG-7688, BUG-7694 (others). Scylla and Charybdis + // situation. Operating against a CDN having service issues may + // lead to requests stalling for an arbitrarily long time with only + // the CURLOPT_TIMEOUT value leading to a closed connection. Sadly + // for pipelining, libcurl (7.39.0 and earlier, at minimum) starts + // the clock on this value as soon as a request is started down + // the wire. We want a short value to recover and retry from the + // CDN. We need a long value to safely deal with a succession of + // piled-up pipelined requests. + // // *TODO: Find a better scheme than timeouts to guarantee liveness. - xfer_timeout *= cpolicy.mPipelining; + // Progress on the connection is what we really want, not timeouts. + // But we don't have access to that and the request progress indicators + // (various libcurl callbacks) have the same problem TIMEOUT does. + // + // xfer_timeout *= cpolicy.mPipelining; + xfer_timeout *= 2L; } // *DEBUG: Enable following override for timeout handling and "[curl:bugs] #1420" tests // xfer_timeout = 1L; |