diff options
author | Don Kjer <don@lindenlab.com> | 2013-03-13 08:49:26 +0000 |
---|---|---|
committer | Don Kjer <don@lindenlab.com> | 2013-03-13 08:49:26 +0000 |
commit | 74055542902b590cd4d7868aa1c14bf4da7c6399 (patch) | |
tree | 39f34a6a09b223691dd010276213dc929d4897b4 /indra | |
parent | 0123ab0dc67dd9de266f1edac2cadbd43ef0aa4d (diff) |
Fixed potential memory leak in LLHTTPClient. Fixed potential hanging http requests in LLHTTPClient. Fixed munging of "Pragma" headers in LLHTTPClientAdapter
Diffstat (limited to 'indra')
-rw-r--r-- | indra/llmessage/llhttpclient.cpp | 15 | ||||
-rw-r--r-- | indra/llmessage/llhttpclientadapter.cpp | 7 |
2 files changed, 17 insertions, 5 deletions
diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp index 0c325a68aa..46b0311cce 100644 --- a/indra/llmessage/llhttpclient.cpp +++ b/indra/llmessage/llhttpclient.cpp @@ -222,7 +222,11 @@ static void request( { if (!LLHTTPClient::hasPump()) { - responder->completed(U32_MAX, "No pump", LLSD()); + if (responder) + { + responder->completed(U32_MAX, "No pump", LLSD()); + } + delete body_injector; return; } LLPumpIO::chain_t chain; @@ -230,8 +234,13 @@ static void request( LLURLRequest* req = new LLURLRequest(method, url); if(!req->isValid())//failed { - delete req ; - return ; + if (responder) + { + responder->completed(498, "Internal Error - curl failure"); + } + delete req; + delete body_injector; + return; } req->setSSLVerifyCallback(LLHTTPClient::getCertVerifyCallback(), (void *)req); diff --git a/indra/llmessage/llhttpclientadapter.cpp b/indra/llmessage/llhttpclientadapter.cpp index f5d7a9abb6..0b59209af1 100644 --- a/indra/llmessage/llhttpclientadapter.cpp +++ b/indra/llmessage/llhttpclientadapter.cpp @@ -43,8 +43,11 @@ void LLHTTPClientAdapter::get(const std::string& url, LLCurl::ResponderPtr respo void LLHTTPClientAdapter::get(const std::string& url, LLCurl::ResponderPtr responder, const LLSD& headers) { LLSD empty_pragma_header = headers; - // as above - empty_pragma_header["Pragma"] = " "; + if (!empty_pragma_header.has("Pragma")) + { + // as above + empty_pragma_header["Pragma"] = " "; + } LLHTTPClient::get(url, responder, empty_pragma_header); } |