diff options
| author | Xiaohong Bao <bao@lindenlab.com> | 2011-06-20 14:01:32 -0600 | 
|---|---|---|
| committer | Xiaohong Bao <bao@lindenlab.com> | 2011-06-20 14:01:32 -0600 | 
| commit | aba4f7ddc89c9d28bdd4b02735134101f40634ed (patch) | |
| tree | 4182980e77f5e12e229ca3f166f8acbefec41e77 | |
| parent | f0369f3d2ceb39dcfb4eee06a12c4a8393cb026f (diff) | |
fix for SH-1870: can not upload book_collection_1.dae when include textures
| -rw-r--r-- | indra/llmessage/llcurl.cpp | 14 | ||||
| -rw-r--r-- | indra/llmessage/llcurl.h | 4 | ||||
| -rwxr-xr-x | indra/newview/app_settings/settings.xml | 11 | ||||
| -rwxr-xr-x | indra/newview/llmeshrepository.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llmeshrepository.h | 3 | 
5 files changed, 29 insertions, 13 deletions
| diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 7c8b7e3584..44330cf8ff 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -244,7 +244,7 @@ public:  	U32 report(CURLcode);  	void getTransferInfo(LLCurl::TransferInfo* info); -	void prepRequest(const std::string& url, const std::vector<std::string>& headers, ResponderPtr, bool post = false); +	void prepRequest(const std::string& url, const std::vector<std::string>& headers, ResponderPtr, S32 time_out = 0, bool post = false);  	const char* getErrorBuffer(); @@ -525,7 +525,7 @@ size_t curlHeaderCallback(void* data, size_t size, size_t nmemb, void* user_data  void LLCurl::Easy::prepRequest(const std::string& url,  							   const std::vector<std::string>& headers, -							   ResponderPtr responder, bool post) +							   ResponderPtr responder, S32 time_out, bool post)  {  	resetState(); @@ -558,7 +558,7 @@ void LLCurl::Easy::prepRequest(const std::string& url,  	//don't verify host name so urls with scrubbed host names will work (improves DNS performance)  	setopt(CURLOPT_SSL_VERIFYHOST, 0); -	setopt(CURLOPT_TIMEOUT, CURL_REQUEST_TIMEOUT); +	setopt(CURLOPT_TIMEOUT, llmax(time_out, CURL_REQUEST_TIMEOUT));  	setoptString(CURLOPT_URL, url); @@ -855,14 +855,14 @@ bool LLCurlRequest::getByteRange(const std::string& url,  bool LLCurlRequest::post(const std::string& url,  						 const headers_t& headers,  						 const LLSD& data, -						 LLCurl::ResponderPtr responder) +						 LLCurl::ResponderPtr responder, S32 time_out)  {  	LLCurl::Easy* easy = allocEasy();  	if (!easy)  	{  		return false;  	} -	easy->prepRequest(url, headers, responder); +	easy->prepRequest(url, headers, responder, time_out);  	LLSDSerialize::toXML(data, easy->getInput());  	S32 bytes = easy->getInput().str().length(); @@ -882,14 +882,14 @@ bool LLCurlRequest::post(const std::string& url,  bool LLCurlRequest::post(const std::string& url,  						 const headers_t& headers,  						 const std::string& data, -						 LLCurl::ResponderPtr responder) +						 LLCurl::ResponderPtr responder, S32 time_out)  {  	LLCurl::Easy* easy = allocEasy();  	if (!easy)  	{  		return false;  	} -	easy->prepRequest(url, headers, responder); +	easy->prepRequest(url, headers, responder, time_out);  	easy->getInput().write(data.data(), data.size());  	S32 bytes = easy->getInput().str().length(); diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index 4ce3fa1078..5833a27b84 100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -201,8 +201,8 @@ public:  	void get(const std::string& url, LLCurl::ResponderPtr responder);  	bool getByteRange(const std::string& url, const headers_t& headers, S32 offset, S32 length, LLCurl::ResponderPtr responder); -	bool post(const std::string& url, const headers_t& headers, const LLSD& data, LLCurl::ResponderPtr responder); -	bool post(const std::string& url, const headers_t& headers, const std::string& data, LLCurl::ResponderPtr responder); +	bool post(const std::string& url, const headers_t& headers, const LLSD& data, LLCurl::ResponderPtr responder, S32 time_out = 0); +	bool post(const std::string& url, const headers_t& headers, const std::string& data, LLCurl::ResponderPtr responder, S32 time_out = 0);  	S32  process();  	S32  getQueued(); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 76fecdf05e..52064c96f2 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5611,6 +5611,17 @@      <key>Value</key>      <real>0</real>    </map> +  <key>MeshUploadTimeOut</key> +  <map> +    <key>Comment</key> +    <string>Maximum time in seconds for llcurl to execute a mesh uoloading request</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>S32</string> +    <key>Value</key> +    <real>600</real> +  </map>    <key>MigrateCacheDirectory</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 6e0722bcf9..2b340fc54d 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1383,6 +1383,8 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data,  	mWholeModelFeeCapability = gAgent.getRegion()->getCapability("NewFileAgentInventory");  	mOrigin += gAgent.getAtAxis() * scale.magVec(); + +	mMeshUploadTimeOut = gSavedSettings.getS32("MeshUploadTimeOut") ;  }  LLMeshUploadThread::~LLMeshUploadThread() @@ -1686,7 +1688,7 @@ void LLMeshUploadThread::doWholeModelUpload()  	mPendingUploads++;  	LLCurlRequest::headers_t headers;  	mCurlRequest->post(mWholeModelFeeCapability, headers, model_data, -					   new LLWholeModelFeeResponder(this,model_data)); +					   new LLWholeModelFeeResponder(this,model_data), mMeshUploadTimeOut);  	do  	{ @@ -1705,7 +1707,7 @@ void LLMeshUploadThread::doWholeModelUpload()  		LLSD body = full_model_data["asset_resources"];  		dump_llsd_to_file(body,make_dump_name("whole_model_body_",dump_num));  		mCurlRequest->post(mWholeModelUploadURL, headers, body, -						   new LLWholeModelUploadResponder(this, model_data)); +						   new LLWholeModelUploadResponder(this, model_data), mMeshUploadTimeOut);  		do  		{  			mCurlRequest->process(); @@ -2874,7 +2876,7 @@ void LLMeshUploadThread::doUploadModel(LLMeshUploadData& data)  		LLCurlRequest::headers_t headers;  		mPendingUploads++; -		mCurlRequest->post(data.mRSVP, headers, data.mAssetData, new LLMeshUploadResponder(data, this)); +		mCurlRequest->post(data.mRSVP, headers, data.mAssetData, new LLMeshUploadResponder(data, this), mMeshUploadTimeOut);  	}  } @@ -2906,7 +2908,7 @@ void LLMeshUploadThread::doUploadTexture(LLTextureUploadData& data)  		LLCurlRequest::headers_t headers;  		mPendingUploads++; -		mCurlRequest->post(data.mRSVP, headers, data.mAssetData, new LLTextureUploadResponder(data, this)); +		mCurlRequest->post(data.mRSVP, headers, data.mAssetData, new LLTextureUploadResponder(data, this), mMeshUploadTimeOut);  	}  } diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index f237c3a60e..f56734a7de 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -356,6 +356,9 @@ public:  class LLMeshUploadThread : public LLThread   { +private: +	S32 mMeshUploadTimeOut ; //maximum time in seconds to execute an uploading request. +  public:  	class DecompRequest : public LLPhysicsDecomp::Request  	{ | 
