Skip to content
Snippets Groups Projects
Commit ec4fd2f0 authored by Monty Brandenberg's avatar Monty Brandenberg
Browse files

MAINT-4564 HTTP Pipelining is not happening in Drano HTTP Phase 4

Incorporate the new libcurl 7.38.0 build with curl bug 1420
workaround.  Add developer-centric testing code to evaluate
the workaround or a future fix for 1420.
parent 99b2d745
No related branches found
No related tags found
No related merge requests found
...@@ -282,9 +282,9 @@ ...@@ -282,9 +282,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>ed283b163e8f74d2c9d6ea5874fcca54</string> <string>40b1c6b3727ebedafc2f1a172797ccd1</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-curl-update/rev/294562/arch/Darwin/installer/curl-7.38.0-darwin-20140923.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-curl-update/rev/295367/arch/Darwin/installer/curl-7.38.0-darwin-20141010.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>darwin</string> <string>darwin</string>
...@@ -294,9 +294,9 @@ ...@@ -294,9 +294,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>6a0a62b6c026fa0b33c0978f4afd152e</string> <string>06149da3d7a34adf40853f813ae55328</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-curl-update/rev/294562/arch/Linux/installer/curl-7.38.0-linux-20140923.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-curl-update/rev/295367/arch/Linux/installer/curl-7.38.0-linux-20141010.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>linux</string> <string>linux</string>
...@@ -306,9 +306,9 @@ ...@@ -306,9 +306,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>56ff4698d5b39a37994f4cc8acba19f0</string> <string>e4280eae792a5f13bc9d01d8cfb7c557</string>
<key>url</key> <key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-curl-update/rev/294562/arch/CYGWIN/installer/curl-7.38.0-windows-20140923.tar.bz2</string> <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-curl-update/rev/295367/arch/CYGWIN/installer/curl-7.38.0-windows-20141010.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows</string> <string>windows</string>
......
...@@ -626,8 +626,8 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service) ...@@ -626,8 +626,8 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)
// *TODO: Find a better scheme than timeouts to guarantee liveness. // *TODO: Find a better scheme than timeouts to guarantee liveness.
xfer_timeout *= cpolicy.mPipelining; xfer_timeout *= cpolicy.mPipelining;
} }
// *DEBUG: Useful for timeout handling and "[curl:bugs] #1420" tests // *DEBUG: Enable following override for timeout handling and "[curl:bugs] #1420" tests
// xfer_timeout = 3L; // xfer_timeout = 1L;
code = curl_easy_setopt(mCurlHandle, CURLOPT_TIMEOUT, xfer_timeout); code = curl_easy_setopt(mCurlHandle, CURLOPT_TIMEOUT, xfer_timeout);
check_curl_easy_code(code, CURLOPT_TIMEOUT); check_curl_easy_code(code, CURLOPT_TIMEOUT);
code = curl_easy_setopt(mCurlHandle, CURLOPT_CONNECTTIMEOUT, timeout); code = curl_easy_setopt(mCurlHandle, CURLOPT_CONNECTTIMEOUT, timeout);
......
...@@ -414,6 +414,18 @@ bool HttpPolicy::stageAfterCompletion(HttpOpRequest * op) ...@@ -414,6 +414,18 @@ bool HttpPolicy::stageAfterCompletion(HttpOpRequest * op)
// Retry or finalize // Retry or finalize
if (! op->mStatus) if (! op->mStatus)
{ {
// *DEBUG: For "[curl:bugs] #1420" tests. This will interfere
// with unit tests due to allocation retention by logging code.
// But you won't be checking this in enabled.
#if 0
if (op->mStatus == HttpStatus(HttpStatus::EXT_CURL_EASY, CURLE_OPERATION_TIMEDOUT))
{
LL_WARNS(LOG_CORE) << "HTTP request " << static_cast<HttpHandle>(op)
<< " timed out."
<< LL_ENDL;
}
#endif
// If this failed, we might want to retry. // If this failed, we might want to retry.
if (op->mPolicyRetries < op->mPolicyRetryLimit && op->mStatus.isRetryable()) if (op->mPolicyRetries < op->mPolicyRetryLimit && op->mStatus.isRetryable())
{ {
......
...@@ -254,8 +254,9 @@ bool HttpStatus::isRetryable() const ...@@ -254,8 +254,9 @@ bool HttpStatus::isRetryable() const
*this == op_timedout || // Timer expired *this == op_timedout || // Timer expired
*this == post_error || // Transport problem *this == post_error || // Transport problem
*this == partial_file || // Data inconsistency in response *this == partial_file || // Data inconsistency in response
*this == inv_cont_range || // Short data read disagrees with content-range // *DEBUG: Comment out 'inv_status' test for [curl:bugs] #1420 testing.
*this == inv_status); // Inv status can reflect internal state problem in libcurl *this == inv_status || // Inv status can reflect internal state problem in libcurl
*this == inv_cont_range); // Short data read disagrees with content-range
} }
} // end namespace LLCore } // end namespace LLCore
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment