summaryrefslogtreecommitdiff
path: root/indra/llmessage/llcurl.cpp
diff options
context:
space:
mode:
authorGraham Madarasz (Graham) <graham@lindenlab.com>2013-02-28 09:45:43 -0800
committerGraham Madarasz (Graham) <graham@lindenlab.com>2013-02-28 09:45:43 -0800
commit2dcbbf04c9375e2de877956476e0a58219a169cf (patch)
treef689fc4bfe9f89cf2bea4c61522af85f3e156577 /indra/llmessage/llcurl.cpp
parentdf08808640031bd27a11177ea49a08f797d2d570 (diff)
Improve curl/ares init behavior by duping handles instead of calling easy_init
Diffstat (limited to 'indra/llmessage/llcurl.cpp')
-rw-r--r--indra/llmessage/llcurl.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp
index 6da153279c..5b9965680d 100644
--- a/indra/llmessage/llcurl.cpp
+++ b/indra/llmessage/llcurl.cpp
@@ -1813,10 +1813,10 @@ CURL* LLCurl::newEasyHandle()
}
sTotalHandles++;
- CURL* ret = curl_easy_init() ;
+ CURL* ret = LLCurlHandleHandler::getInstance()->CreateCurlHandle();
if(!ret)
{
- llwarns << "curl_easy_init failed." << llendl ;
+ llwarns << "failed to create curl handle." << llendl ;
}
return ret ;
@@ -1846,3 +1846,24 @@ void LLCurlFF::check_multi_code(CURLMcode code)
{
check_curl_multi_code(code);
}
+
+CURL* LLCurlHandleHandler::the_one_true_curl_handle;
+
+LLCurlHandleHandler::LLCurlHandleHandler()
+{
+ the_one_true_curl_handle = curl_easy_init();
+ curl_easy_setopt(the_one_true_curl_handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
+ curl_easy_setopt(the_one_true_curl_handle, CURLOPT_NOSIGNAL, 1);
+ curl_easy_setopt(the_one_true_curl_handle, CURLOPT_NOPROGRESS, 1);
+ curl_easy_setopt(the_one_true_curl_handle, CURLOPT_ENCODING, "");
+ curl_easy_setopt(the_one_true_curl_handle, CURLOPT_AUTOREFERER, 1);
+ curl_easy_setopt(the_one_true_curl_handle, CURLOPT_FOLLOWLOCATION, 1);
+ curl_easy_setopt(the_one_true_curl_handle, CURLOPT_SSL_VERIFYPEER, 1);
+ curl_easy_setopt(the_one_true_curl_handle, CURLOPT_SSL_VERIFYHOST, 0);
+ curl_easy_setopt(the_one_true_curl_handle, CURLOPT_DNS_CACHE_TIMEOUT, 0);
+}
+
+CURL* LLCurlHandleHandler::CreateCurlHandle()
+{
+ return curl_easy_duphandle(the_one_true_curl_handle);
+}