diff options
Diffstat (limited to 'indra/llcorehttp')
| -rwxr-xr-x | indra/llcorehttp/_httplibcurl.cpp | 4 | ||||
| -rwxr-xr-x | indra/llcorehttp/_httppolicy.cpp | 4 | ||||
| -rwxr-xr-x | indra/llcorehttp/httpcommon.cpp | 42 | ||||
| -rwxr-xr-x | indra/llcorehttp/httpcommon.h | 8 | ||||
| -rwxr-xr-x | indra/llcorehttp/tests/test_httpstatus.hpp | 61 | 
5 files changed, 113 insertions, 6 deletions
| diff --git a/indra/llcorehttp/_httplibcurl.cpp b/indra/llcorehttp/_httplibcurl.cpp index 0cb4e9d8b7..fc257fb0c1 100755 --- a/indra/llcorehttp/_httplibcurl.cpp +++ b/indra/llcorehttp/_httplibcurl.cpp @@ -249,7 +249,7 @@ void HttpLibcurl::cancelRequest(HttpOpRequest * op)  	{  		LL_INFOS("CoreHttp") << "TRACE, RequestCanceled, Handle:  "  							 << static_cast<HttpHandle>(op) -							 << ", Status:  " << op->mStatus.toHex() +							 << ", Status:  " << op->mStatus.toTerseString()  							 << LL_ENDL;  	} @@ -326,7 +326,7 @@ bool HttpLibcurl::completeRequest(CURLM * multi_handle, CURL * handle, CURLcode  	{  		LL_INFOS("CoreHttp") << "TRACE, RequestComplete, Handle:  "  							 << static_cast<HttpHandle>(op) -							 << ", Status:  " << op->mStatus.toHex() +							 << ", Status:  " << op->mStatus.toTerseString()  							 << LL_ENDL;  	} diff --git a/indra/llcorehttp/_httppolicy.cpp b/indra/llcorehttp/_httppolicy.cpp index ac79a77659..edaf0a5307 100755 --- a/indra/llcorehttp/_httppolicy.cpp +++ b/indra/llcorehttp/_httppolicy.cpp @@ -174,7 +174,7 @@ void HttpPolicy::retryOp(HttpOpRequest * op)  						  << " retry " << op->mPolicyRetries  						  << " scheduled in " << (delta / HttpTime(1000))  						  << " mS (" << (external_delta ? "external" : "internal") -						  << ").  Status:  " << op->mStatus.toHex() +						  << ").  Status:  " << op->mStatus.toTerseString()  						  << LL_ENDL;  	if (op->mTracing > HTTP_TRACE_OFF)  	{ @@ -426,7 +426,7 @@ bool HttpPolicy::stageAfterCompletion(HttpOpRequest * op)  		LL_WARNS("CoreHttp") << "HTTP request " << static_cast<HttpHandle>(op)  							 << " failed after " << op->mPolicyRetries  							 << " retries.  Reason:  " << op->mStatus.toString() -							 << " (" << op->mStatus.toHex() << ")" +							 << " (" << op->mStatus.toTerseString() << ")"  							 << LL_ENDL;  	}  	else if (op->mPolicyRetries) diff --git a/indra/llcorehttp/httpcommon.cpp b/indra/llcorehttp/httpcommon.cpp index f2fcbf77a3..ca57a18578 100755 --- a/indra/llcorehttp/httpcommon.cpp +++ b/indra/llcorehttp/httpcommon.cpp @@ -4,7 +4,7 @@   *   * $LicenseInfo:firstyear=2012&license=viewerlgpl$   * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. + * Copyright (C) 2012-2013, Linden Research, Inc.   *   * This library is free software; you can redistribute it and/or   * modify it under the terms of the GNU Lesser General Public @@ -174,6 +174,46 @@ std::string HttpStatus::toString() const  	}  	return std::string("Unknown error");  } + + +std::string HttpStatus::toTerseString() const +{ +	std::ostringstream result; + +	unsigned int error_value((unsigned short) mStatus); +	 +	switch (mType) +	{ +	case EXT_CURL_EASY: +		result << "Easy_"; +		break; +		 +	case EXT_CURL_MULTI: +		result << "Multi_"; +		break; +		 +	case LLCORE: +		result << "Core_"; +		break; + +	default: +		if (isHttpStatus()) +		{ +			result << "Http_"; +			error_value = mType; +		} +		else +		{ +			result << "Unknown_"; +		} +		break; +	} +	 +	result << error_value; +	return result.str(); +} + +  } // end namespace LLCore diff --git a/indra/llcorehttp/httpcommon.h b/indra/llcorehttp/httpcommon.h index 9db884057f..a04b344a9e 100755 --- a/indra/llcorehttp/httpcommon.h +++ b/indra/llcorehttp/httpcommon.h @@ -380,6 +380,14 @@ struct HttpStatus  	/// LLCore itself).  	std::string toString() const; +	/// Convert status to a compact string representation +	/// of the form:  "<type>_<value>".  The <type> will be +	/// one of:  Core, Http, Easy, Multi, Unknown.  And +	/// <value> will be an unsigned integer.  More easily +	/// interpreted than the hex representation, it's still +	/// compact and easily searched. +	std::string toTerseString() const; +  	/// Returns true if the status value represents an  	/// HTTP response status (100 - 999).  	bool isHttpStatus() const diff --git a/indra/llcorehttp/tests/test_httpstatus.hpp b/indra/llcorehttp/tests/test_httpstatus.hpp index 887315befc..ae8f665f8e 100755 --- a/indra/llcorehttp/tests/test_httpstatus.hpp +++ b/indra/llcorehttp/tests/test_httpstatus.hpp @@ -4,7 +4,7 @@   *   * $LicenseInfo:firstyear=2012&license=viewerlgpl$   * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. + * Copyright (C) 2012-2013, Linden Research, Inc.   *   * This library is free software; you can redistribute it and/or   * modify it under the terms of the GNU Lesser General Public @@ -277,6 +277,65 @@ void HttpStatusTestObjectType::test<7>()  	ensure(msg == "Unknown error");  } + +template <> template <> +void HttpStatusTestObjectType::test<8>() +{ +	set_test_name("HttpStatus toHex() nominal function"); +	 +	HttpStatus status(404); +	std::string msg = status.toHex(); +	// std::cout << "Result:  " << msg << std::endl; +	ensure(msg == "01940001"); +} + + +template <> template <> +void HttpStatusTestObjectType::test<9>() +{ +	set_test_name("HttpStatus toTerseString() nominal function"); +	 +	HttpStatus status(404); +	std::string msg = status.toTerseString(); +	// std::cout << "Result:  " << msg << std::endl; +	ensure("Normal HTTP 404", msg == "Http_404"); + +	status = HttpStatus(200); +	msg = status.toTerseString(); +	// std::cout << "Result:  " << msg << std::endl; +	ensure("Normal HTTP 200", msg == "Http_200"); + +	status = HttpStatus(200, HE_REPLY_ERROR); +	msg = status.toTerseString(); +	// std::cout << "Result:  " << msg << std::endl; +	ensure("Unsuccessful HTTP 200", msg == "Http_200");			// No distinction for error + +	status = HttpStatus(HttpStatus::EXT_CURL_EASY, CURLE_COULDNT_CONNECT); +	msg = status.toTerseString(); +	// std::cout << "Result:  " << msg << std::endl; +	ensure("Easy couldn't connect error", msg == "Easy_7"); + +	status = HttpStatus(HttpStatus::EXT_CURL_MULTI, CURLM_OUT_OF_MEMORY); +	msg = status.toTerseString(); +	// std::cout << "Result:  " << msg << std::endl; +	ensure("Multi out-of-memory error", msg == "Multi_3"); + +	status = HttpStatus(HttpStatus::LLCORE, HE_OPT_NOT_SET); +	msg = status.toTerseString(); +	// std::cout << "Result:  " << msg << std::endl; +	ensure("Core option not set error", msg == "Core_7"); + +	status = HttpStatus(22000, 1); +	msg = status.toTerseString(); +	// std::cout << "Result:  " << msg << std::endl; +	ensure("Undecodable error", msg == "Unknown_1"); + +	status = HttpStatus(22000, -1); +	msg = status.toTerseString(); +	// std::cout << "Result:  " << msg << std::endl; +	ensure("Undecodable error 65535", msg == "Unknown_65535"); +} +  } // end namespace tut  #endif	// TEST_HTTP_STATUS_H | 
