summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorDon Kjer <don@lindenlab.com>2013-03-13 08:49:26 +0000
committerDon Kjer <don@lindenlab.com>2013-03-13 08:49:26 +0000
commit74055542902b590cd4d7868aa1c14bf4da7c6399 (patch)
tree39f34a6a09b223691dd010276213dc929d4897b4 /indra
parent0123ab0dc67dd9de266f1edac2cadbd43ef0aa4d (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.cpp15
-rw-r--r--indra/llmessage/llhttpclientadapter.cpp7
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);
}