diff options
| author | Dave Parks <davep@lindenlab.com> | 2010-10-20 14:39:28 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2010-10-20 14:39:28 -0500 | 
| commit | 1ca35bb30fa18e2d39aa06247b4478740d82d798 (patch) | |
| tree | 2624f75a2ecd6408e116d1c9f17d19d4fefe12cc /indra/llmessage | |
| parent | 7be4856fde3a2b9e2caed4edf6bf65b55aea78b3 (diff) | |
| parent | 187716a4ee9019b0133de865d9ede3c3abc3cc5b (diff) | |
merge
Diffstat (limited to 'indra/llmessage')
| -rw-r--r-- | indra/llmessage/llcurl.cpp | 62 | 
1 files changed, 43 insertions, 19 deletions
| diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 708745239e..66f1ffd41b 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -85,6 +85,22 @@ std::vector<LLMutex*> LLCurl::sSSLMutex;  std::string LLCurl::sCAPath;  std::string LLCurl::sCAFile; +void check_curl_code(CURLcode code) +{ +	if (code != CURLE_OK) +	{ +		llerrs << "curl error detected: " << curl_easy_strerror(code) << llendl; +	} +} + +void check_curl_multi_code(CURLMcode code) +{ +	if (code != CURLM_OK) +	{ +		llerrs << "curl multi error detected: " << curl_multi_strerror(code) << llendl; +	} +} +  //static  void LLCurl::setCAPath(const std::string& path)  { @@ -333,8 +349,9 @@ LLCurl::Easy* LLCurl::Easy::getEasy()  	// set no DNS caching as default for all easy handles. This prevents them adopting a  	// multi handles cache if they are added to one. -	curl_easy_setopt(easy->mCurlEasyHandle, CURLOPT_DNS_CACHE_TIMEOUT, 0); - +	CURLcode result = curl_easy_setopt(easy->mCurlEasyHandle, CURLOPT_DNS_CACHE_TIMEOUT, 0); +	check_curl_code(result); +	  	++gCurlEasyCount;  	return easy;  } @@ -400,9 +417,9 @@ void LLCurl::Easy::setHeaders()  void LLCurl::Easy::getTransferInfo(LLCurl::TransferInfo* info)  { -	curl_easy_getinfo(mCurlEasyHandle, CURLINFO_SIZE_DOWNLOAD, &info->mSizeDownload); -	curl_easy_getinfo(mCurlEasyHandle, CURLINFO_TOTAL_TIME, &info->mTotalTime); -	curl_easy_getinfo(mCurlEasyHandle, CURLINFO_SPEED_DOWNLOAD, &info->mSpeedDownload); +	check_curl_code(curl_easy_getinfo(mCurlEasyHandle, CURLINFO_SIZE_DOWNLOAD, &info->mSizeDownload)); +	check_curl_code(curl_easy_getinfo(mCurlEasyHandle, CURLINFO_TOTAL_TIME, &info->mTotalTime)); +	check_curl_code(curl_easy_getinfo(mCurlEasyHandle, CURLINFO_SPEED_DOWNLOAD, &info->mSpeedDownload));  }  U32 LLCurl::Easy::report(CURLcode code) @@ -412,7 +429,7 @@ U32 LLCurl::Easy::report(CURLcode code)  	if (code == CURLE_OK)  	{ -		curl_easy_getinfo(mCurlEasyHandle, CURLINFO_RESPONSE_CODE, &responseCode); +		check_curl_code(curl_easy_getinfo(mCurlEasyHandle, CURLINFO_RESPONSE_CODE, &responseCode));  		//*TODO: get reason from first line of mHeaderOutput  	}  	else @@ -435,17 +452,20 @@ U32 LLCurl::Easy::report(CURLcode code)  // Note: these all assume the caller tracks the value (i.e. keeps it persistant)  void LLCurl::Easy::setopt(CURLoption option, S32 value)  { -	curl_easy_setopt(mCurlEasyHandle, option, value); +	CURLcode result = curl_easy_setopt(mCurlEasyHandle, option, value); +	check_curl_code(result);  }  void LLCurl::Easy::setopt(CURLoption option, void* value)  { -	curl_easy_setopt(mCurlEasyHandle, option, value); +	CURLcode result = curl_easy_setopt(mCurlEasyHandle, option, value); +	check_curl_code(result);  }  void LLCurl::Easy::setopt(CURLoption option, char* value)  { -	curl_easy_setopt(mCurlEasyHandle, option, value); +	CURLcode result = curl_easy_setopt(mCurlEasyHandle, option, value); +	check_curl_code(result);  }  // Note: this copies the string so that the caller does not have to keep it around @@ -454,7 +474,8 @@ void LLCurl::Easy::setoptString(CURLoption option, const std::string& value)  	char* tstring = new char[value.length()+1];  	strcpy(tstring, value.c_str());  	mStrings.push_back(tstring); -	curl_easy_setopt(mCurlEasyHandle, option, tstring); +	CURLcode result = curl_easy_setopt(mCurlEasyHandle, option, tstring); +	check_curl_code(result);  }  void LLCurl::Easy::slist_append(const char* str) @@ -593,12 +614,12 @@ LLCurl::Multi::Multi()  	  mErrorCount(0)  {  	mCurlMultiHandle = curl_multi_init(); -	  	if (!mCurlMultiHandle)  	{  		llwarns << "curl_multi_init() returned NULL! Easy handles: " << gCurlEasyCount << " Multi handles: " << gCurlMultiCount << llendl;  		mCurlMultiHandle = curl_multi_init();  	} +	  	llassert_always(mCurlMultiHandle);  	++gCurlMultiCount;  } @@ -610,7 +631,7 @@ LLCurl::Multi::~Multi()  		iter != mEasyActiveList.end(); ++iter)  	{  		Easy* easy = *iter; -		curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle()); +		check_curl_multi_code(curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle()));  		delete easy;  	}  	mEasyActiveList.clear(); @@ -620,7 +641,7 @@ LLCurl::Multi::~Multi()  	for_each(mEasyFreeList.begin(), mEasyFreeList.end(), DeletePointer());	  	mEasyFreeList.clear(); -	curl_multi_cleanup(mCurlMultiHandle); +	check_curl_multi_code(curl_multi_cleanup(mCurlMultiHandle));  	--gCurlMultiCount;  } @@ -641,8 +662,10 @@ S32 LLCurl::Multi::perform()  		CURLMcode code = curl_multi_perform(mCurlMultiHandle, &q);  		if (CURLM_CALL_MULTI_PERFORM != code || q == 0)  		{ +			check_curl_multi_code(code);  			break;  		} +	  	}  	mQueued = q;  	return q; @@ -709,11 +732,12 @@ LLCurl::Easy* LLCurl::Multi::allocEasy()  bool LLCurl::Multi::addEasy(Easy* easy)  {  	CURLMcode mcode = curl_multi_add_handle(mCurlMultiHandle, easy->getCurlHandle()); -	if (mcode != CURLM_OK) -	{ -		llwarns << "Curl Error: " << curl_multi_strerror(mcode) << llendl; -		return false; -	} +	check_curl_multi_code(mcode); +	//if (mcode != CURLM_OK) +	//{ +	//	llwarns << "Curl Error: " << curl_multi_strerror(mcode) << llendl; +	//	return false; +	//}  	return true;  } @@ -734,7 +758,7 @@ void LLCurl::Multi::easyFree(Easy* easy)  void LLCurl::Multi::removeEasy(Easy* easy)  { -	curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle()); +	check_curl_multi_code(curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle()));  	easyFree(easy);  } | 
