diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index aaa19c4b5..e9ba67c29 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -583,10 +583,10 @@ LLCurl::Multi::Multi(F32 idle_time_out) LLCurl::Multi::~Multi() { - cleanup() ; + cleanup(true); } -void LLCurl::Multi::cleanup() +void LLCurl::Multi::cleanup(bool deleted) { if(!mCurlMultiHandle) { @@ -599,6 +599,11 @@ void LLCurl::Multi::cleanup() { Easy* easy = *iter; check_curl_multi_code(curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle())); + + if(deleted) + { + easy->mResponder = NULL ; //avoid triggering mResponder. + } delete easy; } mEasyActiveList.clear(); diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index fd664c0fa..fb6f5c6a8 100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -318,7 +318,7 @@ public: private: void easyFree(LLCurl::Easy*); - void cleanup() ; + void cleanup(bool deleted = false); CURLM* mCurlMultiHandle;