diff options
| author | Monty Brandenberg <monty@lindenlab.com> | 2014-10-10 16:43:04 -0400 | 
|---|---|---|
| committer | Monty Brandenberg <monty@lindenlab.com> | 2014-10-10 16:43:04 -0400 | 
| commit | ec4fd2f0e226bb2cae5982760317e1d6ea2d2d69 (patch) | |
| tree | f476b85202a0667372feb964d3c046b2655d0ace | |
| parent | 99b2d7455467b126b0b6fd7ac3e7d0ef074000a6 (diff) | |
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.
| -rwxr-xr-x | autobuild.xml | 12 | ||||
| -rwxr-xr-x | indra/llcorehttp/_httpoprequest.cpp | 4 | ||||
| -rwxr-xr-x | indra/llcorehttp/_httppolicy.cpp | 12 | ||||
| -rwxr-xr-x | indra/llcorehttp/httpcommon.cpp | 5 | 
4 files changed, 23 insertions, 10 deletions
| diff --git a/autobuild.xml b/autobuild.xml index b9db04c28b..1045e11b6d 100755 --- a/autobuild.xml +++ b/autobuild.xml @@ -282,9 +282,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>ed283b163e8f74d2c9d6ea5874fcca54</string> +              <string>40b1c6b3727ebedafc2f1a172797ccd1</string>                <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>              <key>name</key>              <string>darwin</string> @@ -294,9 +294,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>6a0a62b6c026fa0b33c0978f4afd152e</string> +              <string>06149da3d7a34adf40853f813ae55328</string>                <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>              <key>name</key>              <string>linux</string> @@ -306,9 +306,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>56ff4698d5b39a37994f4cc8acba19f0</string> +              <string>e4280eae792a5f13bc9d01d8cfb7c557</string>                <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>              <key>name</key>              <string>windows</string> diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp index bbda0b82fd..fbbb1614fb 100755 --- a/indra/llcorehttp/_httpoprequest.cpp +++ b/indra/llcorehttp/_httpoprequest.cpp @@ -626,8 +626,8 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)  		// *TODO:  Find a better scheme than timeouts to guarantee liveness.  		xfer_timeout *= cpolicy.mPipelining;  	} -	// *DEBUG:  Useful for timeout handling and "[curl:bugs] #1420" tests -	// xfer_timeout = 3L; +	// *DEBUG:  Enable following override for timeout handling and "[curl:bugs] #1420" tests +	// xfer_timeout = 1L;  	code = curl_easy_setopt(mCurlHandle, CURLOPT_TIMEOUT, xfer_timeout);  	check_curl_easy_code(code, CURLOPT_TIMEOUT);  	code = curl_easy_setopt(mCurlHandle, CURLOPT_CONNECTTIMEOUT, timeout); diff --git a/indra/llcorehttp/_httppolicy.cpp b/indra/llcorehttp/_httppolicy.cpp index 09b9206f63..e5d6321401 100755 --- a/indra/llcorehttp/_httppolicy.cpp +++ b/indra/llcorehttp/_httppolicy.cpp @@ -414,6 +414,18 @@ bool HttpPolicy::stageAfterCompletion(HttpOpRequest * op)  	// Retry or finalize  	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 (op->mPolicyRetries < op->mPolicyRetryLimit && op->mStatus.isRetryable())  		{ diff --git a/indra/llcorehttp/httpcommon.cpp b/indra/llcorehttp/httpcommon.cpp index 8714915fa2..7907e958a4 100755 --- a/indra/llcorehttp/httpcommon.cpp +++ b/indra/llcorehttp/httpcommon.cpp @@ -254,8 +254,9 @@ bool HttpStatus::isRetryable() const  			*this == op_timedout ||		// Timer expired  			*this == post_error ||		// Transport problem  			*this == partial_file ||	// Data inconsistency in response -			*this == inv_cont_range ||	// Short data read disagrees with content-range -			*this == inv_status);		// Inv status can reflect internal state problem in libcurl +			// *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_cont_range);	// Short data read disagrees with content-range  }  } // end namespace LLCore | 
