summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorMonty Brandenberg <monty@lindenlab.com>2012-07-06 18:09:17 -0400
committerMonty Brandenberg <monty@lindenlab.com>2012-07-06 18:09:17 -0400
commitf37b90df5046fbe50309beada01022e35c5aa424 (patch)
tree2f8c55829c789de307b221a426b276324bbffd80 /indra
parentadce38800a3ac428c3e0b89fe5d62ca3baf97471 (diff)
SH-3222 Slow loading textures on Lag Me 1
Think I have found the major factor that causes the Linksys WRT54G V5 to fall over in testing scenarios: DNS. For some historical reason, we're trying to use libcurl without any DNS caching. My implementation echoed that and implemented it correctly and I was seeing a DNS request per request on the wire. The existing implementation tries to do that and has bugs because it is clearing caching DNS data querying only once every few seconds. Once I started emulating the bug, comms through the WRT became much, much more reliable.
Diffstat (limited to 'indra')
-rw-r--r--indra/llcorehttp/_httpinternal.h3
-rw-r--r--indra/llcorehttp/_httpoprequest.cpp11
2 files changed, 12 insertions, 2 deletions
diff --git a/indra/llcorehttp/_httpinternal.h b/indra/llcorehttp/_httpinternal.h
index bc0bd6a2ab..4ccace2b30 100644
--- a/indra/llcorehttp/_httpinternal.h
+++ b/indra/llcorehttp/_httpinternal.h
@@ -77,6 +77,9 @@ const int LOOP_SLEEP_NORMAL_MS = 2;
// Block allocation size (a tuning parameter) is found
// in bufferarray.h.
+// Compatibility controls
+const bool ENABLE_LINKSYS_WRT54G_V5_DNS_FIX = true;
+
} // end namespace LLCore
#endif // _LLCORE_HTTP_INTERNAL_H_
diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp
index 86ecee5b26..a19b6bd0dc 100644
--- a/indra/llcorehttp/_httpoprequest.cpp
+++ b/indra/llcorehttp/_httpoprequest.cpp
@@ -385,8 +385,15 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)
curl_easy_setopt(mCurlHandle, CURLOPT_PRIVATE, this);
curl_easy_setopt(mCurlHandle, CURLOPT_ENCODING, "");
- // *FIXME: Revisit this old DNS timeout setting - may no longer be valid
- curl_easy_setopt(mCurlHandle, CURLOPT_DNS_CACHE_TIMEOUT, 0);
+ if (ENABLE_LINKSYS_WRT54G_V5_DNS_FIX)
+ {
+ curl_easy_setopt(mCurlHandle, CURLOPT_DNS_CACHE_TIMEOUT, 10);
+ }
+ else
+ {
+ // *FIXME: Revisit this old DNS timeout setting - may no longer be valid
+ curl_easy_setopt(mCurlHandle, CURLOPT_DNS_CACHE_TIMEOUT, 0);
+ }
curl_easy_setopt(mCurlHandle, CURLOPT_AUTOREFERER, 1);
curl_easy_setopt(mCurlHandle, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(mCurlHandle, CURLOPT_MAXREDIRS, DEFAULT_HTTP_REDIRECTS); // *FIXME: parameterize this later