diff options
Diffstat (limited to 'indra/llmessage')
| -rw-r--r-- | indra/llmessage/llcurl.cpp | 6 | ||||
| -rw-r--r-- | indra/llmessage/llcurl.h | 2 | ||||
| -rw-r--r-- | indra/llmessage/llurlrequest.cpp | 6 | 
3 files changed, 8 insertions, 6 deletions
diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index f569630766..e17380fdf5 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -675,6 +675,10 @@ bool LLCurl::Multi::doPerform()  				call_count++)  		{  			LLMutexLock lock(mMutexp) ; + +			//WARNING: curl_multi_perform will block for many hundreds of milliseconds +			// NEVER call this from the main thread, and NEVER allow the main thread to  +			// wait on a mutex held by this thread while curl_multi_perform is executing  			CURLMcode code = curl_multi_perform(mCurlMultiHandle, &q);  			if (CURLM_CALL_MULTI_PERFORM != code || q == 0)  			{ @@ -873,7 +877,7 @@ LLCurlThread::~LLCurlThread()  	LLCurl::Multi::sMultiInitMutexp = NULL ;  } -S32 LLCurlThread::update(U32 max_time_ms) +S32 LLCurlThread::update(F32 max_time_ms)  {	  	return LLQueuedThread::update(max_time_ms);  } diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index 705cdcbbcc..9c2c215c7a 100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -349,7 +349,7 @@ public:  	LLCurlThread(bool threaded = true) ;  	virtual ~LLCurlThread() ; -	S32 update(U32 max_time_ms); +	S32 update(F32 max_time_ms);  	void addMulti(LLCurl::Multi* multi) ;  	void killMulti(LLCurl::Multi* multi) ; diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp index a3a2b2b1b8..261e57e79e 100644 --- a/indra/llmessage/llurlrequest.cpp +++ b/indra/llmessage/llurlrequest.cpp @@ -64,7 +64,7 @@ public:  	~LLURLRequestDetail();  	std::string mURL;  	LLCurlEasyRequest* mCurlRequest; -	LLBufferArray* mResponseBuffer; +	LLIOPipe::buffer_ptr_t mResponseBuffer;  	LLChannelDescriptors mChannels;  	U8* mLastRead;  	U32 mBodyLimit; @@ -75,7 +75,6 @@ public:  LLURLRequestDetail::LLURLRequestDetail() :  	mCurlRequest(NULL), -	mResponseBuffer(NULL),  	mLastRead(NULL),  	mBodyLimit(0),  	mByteAccumulator(0), @@ -90,7 +89,6 @@ LLURLRequestDetail::~LLURLRequestDetail()  {  	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);  	delete mCurlRequest; -	mResponseBuffer = NULL;  	mLastRead = NULL;  } @@ -326,7 +324,7 @@ LLIOPipe::EStatus LLURLRequest::process_impl(  		// *FIX: bit of a hack, but it should work. The configure and  		// callback method expect this information to be ready. -		mDetail->mResponseBuffer = buffer.get(); +		mDetail->mResponseBuffer = buffer;  		mDetail->mChannels = channels;  		if(!configure())  		{  | 
