diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index ab81cadc9603134a0b2ead731b291f588085db22..94286f0ff418e24865e2aa846efff4e7a8c886e0 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -91,6 +91,7 @@ set(viewer_SOURCE_FILES
     llagentwearables.cpp
     llagentwearablesfetch.cpp
     llanimstatelabels.cpp
+    llappcorehttp.cpp
     llappearancemgr.cpp
     llappviewer.cpp
     llappviewerlistener.cpp
@@ -648,6 +649,7 @@ set(viewer_HEADER_FILES
     llagentwearables.h
     llagentwearablesfetch.h
     llanimstatelabels.h
+    llappcorehttp.h
     llappearance.h
     llappearancemgr.h
     llappviewer.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index c9b4de014097f001ba1bf2e16f1312d3469a120c..fc32e65410fdf6a28acdbbf301d2291658be0b32 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10743,6 +10743,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>TextureFetchConcurrency</key>
+    <map>
+      <key>Comment</key>
+      <string>Maximum number of HTTP connections used for texture fetches</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>TextureFetchDebuggerEnabled</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llappcorehttp.cpp b/indra/newview/llappcorehttp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e89c8d5ac2fce13c2708f84d21f08c021d1e8851
--- /dev/null
+++ b/indra/newview/llappcorehttp.cpp
@@ -0,0 +1,186 @@
+/**
+ * @file llappcorehttp.cpp
+ * @brief 
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llappcorehttp.h"
+
+#include "llviewercontrol.h"
+
+
+const F64 LLAppCoreHttp::MAX_THREAD_WAIT_TIME(10.0);
+
+LLAppCoreHttp::LLAppCoreHttp()
+	: mRequest(NULL),
+	  mStopHandle(LLCORE_HTTP_HANDLE_INVALID),
+	  mStopRequested(0.0),
+	  mStopped(false),
+	  mPolicyDefault(-1)
+{}
+
+
+LLAppCoreHttp::~LLAppCoreHttp()
+{
+	delete mRequest;
+	mRequest = NULL;
+}
+
+
+void LLAppCoreHttp::init()
+{
+	LLCore::HttpStatus status = LLCore::HttpRequest::createService();
+	if (! status)
+	{
+		LL_ERRS("Init") << "Failed to initialize HTTP services.  Reason:  "
+						<< status.toString()
+						<< LL_ENDL;
+	}
+
+	// Point to our certs or SSH/https: will fail on connect
+	status = LLCore::HttpRequest::setPolicyGlobalOption(LLCore::HttpRequest::GP_CA_FILE,
+														gDirUtilp->getCAFile());
+	if (! status)
+	{
+		LL_ERRS("Init") << "Failed to set CA File for HTTP services.  Reason:  "
+						<< status.toString()
+						<< LL_ENDL;
+	}
+
+	// Establish HTTP Proxy.  "LLProxy" is a special string which directs
+	// the code to use LLProxy::applyProxySettings() to establish any
+	// HTTP or SOCKS proxy for http operations.
+	status = LLCore::HttpRequest::setPolicyGlobalOption(LLCore::HttpRequest::GP_LLPROXY, 1);
+	if (! status)
+	{
+		LL_ERRS("Init") << "Failed to set HTTP proxy for HTTP services.  Reason:  "
+						<< status.toString()
+						<< LL_ENDL;
+	}
+
+	// Tracing levels for library & libcurl (note that 2 & 3 are beyond spammy):
+	// 0 - None
+	// 1 - Basic start, stop simple transitions
+	// 2 - libcurl CURLOPT_VERBOSE mode with brief lines
+	// 3 - with partial data content
+	status = LLCore::HttpRequest::setPolicyGlobalOption(LLCore::HttpRequest::GP_TRACE, 0);
+
+	// Setup default policy and constrain if directed to
+	mPolicyDefault = LLCore::HttpRequest::DEFAULT_POLICY_ID;
+	static const std::string texture_concur("TextureFetchConcurrency");
+	if (gSavedSettings.controlExists(texture_concur))
+	{
+		U32 concur(llmin(gSavedSettings.getU32(texture_concur), U32(12)));
+
+		if (concur > 0)
+		{
+			LLCore::HttpStatus status;
+			status = LLCore::HttpRequest::setPolicyClassOption(mPolicyDefault,
+															   LLCore::HttpRequest::CP_CONNECTION_LIMIT,
+															   concur);
+			if (! status)
+			{
+				LL_WARNS("Init") << "Unable to set texture fetch concurrency.  Reason:  "
+								 << status.toString()
+								 << LL_ENDL;
+			}
+			else
+			{
+				LL_INFOS("Init") << "Application settings overriding default texture fetch concurrency.  New value:  "
+								 << concur
+								 << LL_ENDL;
+			}
+		}
+	}
+	
+	// Kick the thread
+	status = LLCore::HttpRequest::startThread();
+	if (! status)
+	{
+		LL_ERRS("Init") << "Failed to start HTTP servicing thread.  Reason:  "
+						<< status.toString()
+						<< LL_ENDL;
+	}
+
+	mRequest = new LLCore::HttpRequest;
+}
+
+
+void LLAppCoreHttp::requestStop()
+{
+	llassert_always(mRequest);
+
+	mStopHandle = mRequest->requestStopThread(this);
+	if (LLCORE_HTTP_HANDLE_INVALID != mStopHandle)
+	{
+		mStopRequested = LLTimer::getTotalSeconds();
+	}
+}
+
+
+void LLAppCoreHttp::cleanup()
+{
+	if (LLCORE_HTTP_HANDLE_INVALID == mStopHandle)
+	{
+		// Should have been started already...
+		requestStop();
+	}
+	
+	if (LLCORE_HTTP_HANDLE_INVALID == mStopHandle)
+	{
+		LL_WARNS("Cleanup") << "Attempting to cleanup HTTP services without thread shutdown"
+							<< LL_ENDL;
+	}
+	else
+	{
+		while (! mStopped && LLTimer::getTotalSeconds() < (mStopRequested + MAX_THREAD_WAIT_TIME))
+		{
+			mRequest->update(200000);
+			ms_sleep(50);
+		}
+		if (! mStopped)
+		{
+			LL_WARNS("Cleanup") << "Attempting to cleanup HTTP services with thread shutdown incomplete"
+								<< LL_ENDL;
+		}
+	}
+
+	delete mRequest;
+	mRequest = NULL;
+
+	LLCore::HttpStatus status = LLCore::HttpRequest::destroyService();
+	if (! status)
+	{
+		LL_WARNS("Cleanup") << "Failed to shutdown HTTP services, continuing.  Reason:  "
+							<< status.toString()
+							<< LL_ENDL;
+	}
+}
+
+
+void LLAppCoreHttp::onCompleted(LLCore::HttpHandle, LLCore::HttpResponse *)
+{
+	mStopped = true;
+}
diff --git a/indra/newview/llappcorehttp.h b/indra/newview/llappcorehttp.h
new file mode 100644
index 0000000000000000000000000000000000000000..241d73ad52737d1ee78b2a22e490c918db72a100
--- /dev/null
+++ b/indra/newview/llappcorehttp.h
@@ -0,0 +1,86 @@
+/**
+ * @file llappcorehttp.h
+ * @brief Singleton initialization/shutdown class for llcorehttp library
+ *
+ * $LicenseInfo:firstyear=2012&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef	_LL_APP_COREHTTP_H_
+#define	_LL_APP_COREHTTP_H_
+
+
+#include "httprequest.h"
+#include "httphandler.h"
+#include "httpresponse.h"
+
+
+// This class manages the lifecyle of the core http library.
+// Slightly different style than traditional code but reflects
+// the use of handler classes and light-weight interface
+// object instances of the new libraries.  To be used
+// as a singleton and static construction is fine.
+class LLAppCoreHttp : public LLCore::HttpHandler
+{
+public:
+	LLAppCoreHttp();
+	~LLAppCoreHttp();
+	
+	// Initialize the LLCore::HTTP library creating service classes
+	// and starting the servicing thread.  Caller is expected to do
+	// other initializations (SSL mutex, thread hash function) appropriate
+	// for the application.
+	void init();
+
+	// Request that the servicing thread stop servicing requests,
+	// release resource references and stop.  Request is asynchronous
+	// and @see cleanup() will perform a limited wait loop for this
+	// request to stop the thread.
+	void requestStop();
+	
+	// Terminate LLCore::HTTP library services.  Caller is expected
+	// to have made a best-effort to shutdown the servicing thread
+	// by issuing a requestThreadStop() and waiting for completion
+	// notification that the stop has completed.
+	void cleanup();
+
+	// Notification when the stop request is complete.
+	virtual void onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response);
+
+	// Retrieve the policy class for default operations.
+	int getPolicyDefault() const
+		{
+			return mPolicyDefault;
+		}
+	
+private:
+	static const F64			MAX_THREAD_WAIT_TIME;
+	
+private:
+	LLCore::HttpRequest *		mRequest;
+	LLCore::HttpHandle			mStopHandle;
+	F64							mStopRequested;
+	bool						mStopped;
+	int							mPolicyDefault;
+};
+
+
+#endif	// _LL_APP_COREHTTP_H_
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 0549a972e1ab3b8fd35be83ba9664c3b741fcbbc..f8ee1a477f992696ab3d28966760b3a9458a60e0 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -215,10 +215,6 @@
 #include "llmachineid.h"
 #include "llmainlooprepeater.h"
 
-// LLCore::HTTP
-#include "httpcommon.h"
-#include "httprequest.h"
-#include "httphandler.h"
 
 // *FIX: These extern globals should be cleaned up.
 // The globals either represent state/config/resource-storage of either 
@@ -334,53 +330,6 @@ static std::string gLaunchFileOnQuit;
 // Used on Win32 for other apps to identify our window (eg, win_setup)
 const char* const VIEWER_WINDOW_CLASSNAME = "Second Life";
 
-namespace
-{
-
-// This class manages the lifecyle of the core http library.
-// Slightly different style than traditional code but reflects
-// the use of handler classes and light-weight interface
-// object instances of the new libraries.  To be used
-// as a singleton and static construction is fine.
-class CoreHttp : public LLCore::HttpHandler
-{
-public:
-	CoreHttp();
-	~CoreHttp();
-	
-	// Initialize the LLCore::HTTP library creating service classes
-	// and starting the servicing thread.  Caller is expected to do
-	// other initializations (SSL mutex, thread hash function) appropriate
-	// for the application.
-	void init();
-
-	// Request that the servicing thread stop servicing requests,
-	// release resource references and stop.
-	void requestStop();
-	
-	// Terminate LLCore::HTTP library services.  Caller is expected
-	// to have made a best-effort to shutdown the servicing thread
-	// by issuing a requestThreadStop() and waiting for completion
-	// notification that the stop has completed.
-	void cleanup();
-
-	// Notification when the stop request is complete.
-	virtual void onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response);
-
-private:
-	static const F64			MAX_THREAD_WAIT_TIME;
-	
-private:
-	LLCore::HttpRequest *		mRequest;
-	LLCore::HttpHandle			mStopHandle;
-	F64							mStopRequested;
-	bool						mStopped;
-};
-
-CoreHttp coreHttpLib;
-	
-}  // end anonymous namespace
-
 //-- LLDeferredTaskList ------------------------------------------------------
 
 /**
@@ -775,8 +724,9 @@ bool LLAppViewer::init()
 	LLViewerStatsRecorder::initClass();
 #endif
 
-	// Initialize the non-LLCurl libcurl library
-	coreHttpLib.init();
+	// Initialize the non-LLCurl libcurl library.  Should be called
+	// before consumers (LLTextureFetch).
+	mAppCoreHttp.init();
 	
     // *NOTE:Mani - LLCurl::initClass is not thread safe. 
     // Called before threads are created.
@@ -1915,7 +1865,7 @@ bool LLAppViewer::cleanup()
 
 	// Delete workers first
 	// shotdown all worker threads before deleting them in case of co-dependencies
-	coreHttpLib.requestStop();
+	mAppCoreHttp.requestStop();
 	sTextureFetch->shutdown();
 	sTextureCache->shutdown();	
 	sImageDecodeThread->shutdown();
@@ -2000,7 +1950,7 @@ bool LLAppViewer::cleanup()
 	LLCurl::cleanupClass();
 
 	// Non-LLCurl libcurl library
-	coreHttpLib.cleanup();
+	mAppCoreHttp.cleanup();
 
 	// If we're exiting to launch an URL, do that here so the screen
 	// is at the right resolution before we launch IE.
@@ -5298,132 +5248,3 @@ void LLAppViewer::metricsSend(bool enable_reporting)
 	gViewerAssetStatsMain->reset();
 }
 
-namespace
-{
-
-const F64 CoreHttp::MAX_THREAD_WAIT_TIME(10.0);
-
-CoreHttp::CoreHttp()
-	: mRequest(NULL),
-	  mStopHandle(LLCORE_HTTP_HANDLE_INVALID),
-	  mStopRequested(0.0),
-	  mStopped(false)
-{}
-
-
-CoreHttp::~CoreHttp()
-{
-	delete mRequest;
-	mRequest = NULL;
-}
-
-
-void CoreHttp::init()
-{
-	LLCore::HttpStatus status = LLCore::HttpRequest::createService();
-	if (! status)
-	{
-		LL_ERRS("Init") << "Failed to initialize HTTP services.  Reason:  "
-						<< status.toString()
-						<< LL_ENDL;
-	}
-
-	// Point to our certs or SSH/https: will fail on connect
-	status = LLCore::HttpRequest::setPolicyGlobalOption(LLCore::HttpRequest::GP_CA_FILE,
-														gDirUtilp->getCAFile());
-	if (! status)
-	{
-		LL_ERRS("Init") << "Failed to set CA File for HTTP services.  Reason:  "
-						<< status.toString()
-						<< LL_ENDL;
-	}
-
-	// Establish HTTP Proxy.  "LLProxy" is a special string which directs
-	// the code to use LLProxy::applyProxySettings() to establish any
-	// HTTP or SOCKS proxy for http operations.
-	status = LLCore::HttpRequest::setPolicyGlobalOption(LLCore::HttpRequest::GP_LLPROXY, 1);
-	if (! status)
-	{
-		LL_ERRS("Init") << "Failed to set HTTP proxy for HTTP services.  Reason:  "
-						<< status.toString()
-						<< LL_ENDL;
-	}
-
-	// Tracing levels for library & libcurl (note that 2 & 3 are beyond spammy):
-	// 0 - None
-	// 1 - Basic start, stop simple transitions
-	// 2 - libcurl CURLOPT_VERBOSE mode with brief lines
-	// 3 - with partial data content
-	status = LLCore::HttpRequest::setPolicyGlobalOption(LLCore::HttpRequest::GP_TRACE, 0);
-
-	// Kick the thread
-	status = LLCore::HttpRequest::startThread();
-	if (! status)
-	{
-		LL_ERRS("Init") << "Failed to start HTTP servicing thread.  Reason:  "
-						<< status.toString()
-						<< LL_ENDL;
-	}
-
-	mRequest = new LLCore::HttpRequest;
-}
-
-
-void CoreHttp::requestStop()
-{
-	llassert_always(mRequest);
-
-	mStopHandle = mRequest->requestStopThread(this);
-	if (LLCORE_HTTP_HANDLE_INVALID != mStopHandle)
-	{
-		mStopRequested = LLTimer::getTotalSeconds();
-	}
-}
-
-
-void CoreHttp::cleanup()
-{
-	if (LLCORE_HTTP_HANDLE_INVALID == mStopHandle)
-	{
-		// Should have been started already...
-		requestStop();
-	}
-	
-	if (LLCORE_HTTP_HANDLE_INVALID == mStopHandle)
-	{
-		LL_WARNS("Cleanup") << "Attempting to cleanup HTTP services without thread shutdown"
-							<< LL_ENDL;
-	}
-	else
-	{
-		while (! mStopped && LLTimer::getTotalSeconds() < (mStopRequested + MAX_THREAD_WAIT_TIME))
-		{
-			mRequest->update(200000);
-			ms_sleep(50);
-		}
-		if (! mStopped)
-		{
-			LL_WARNS("Cleanup") << "Attempting to cleanup HTTP services with thread shutdown incomplete"
-								<< LL_ENDL;
-		}
-	}
-
-	delete mRequest;
-	mRequest = NULL;
-
-	LLCore::HttpStatus status = LLCore::HttpRequest::destroyService();
-	if (! status)
-	{
-		LL_WARNS("Cleanup") << "Failed to shutdown HTTP services, continuing.  Reason:  "
-							<< status.toString()
-							<< LL_ENDL;
-	}
-}
-
-
-void CoreHttp::onCompleted(LLCore::HttpHandle, LLCore::HttpResponse *)
-{
-	mStopped = true;
-}
-
-}  // end anonymous namespace
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index f7d019ccbacfd5ba235832687f32a243f21d62b0..a694ea9fe6612608a1a7d9ba742516370b7c27e4 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -31,6 +31,7 @@
 #include "llcontrol.h"
 #include "llsys.h"			// for LLOSInfo
 #include "lltimer.h"
+#include "llappcorehttp.h"
 
 class LLCommandLineParser;
 class LLFrameTimer;
@@ -173,6 +174,9 @@ class LLAppViewer : public LLApp
 	// Metrics policy helper statics.
 	static void metricsUpdateRegion(U64 region_handle);
 	static void metricsSend(bool enable_reporting);
+
+	// llcorehttp init/shutdown/config information.
+	LLAppCoreHttp & getAppCoreHttp()			{ return mAppCoreHttp; }
 	
 protected:
 	virtual bool initWindow(); // Initialize the viewer's window.
@@ -270,6 +274,9 @@ class LLAppViewer : public LLApp
 	
 	boost::scoped_ptr<LLUpdaterService> mUpdater;
 
+	// llcorehttp library init/shutdown helper
+	LLAppCoreHttp mAppCoreHttp;
+
 	//---------------------------------------------
 	//*NOTE: Mani - legacy updater stuff
 	// Still useable?
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 51d57ccf6892163e1cfafdbcfb802b44d3133401..b5586d125033221321b4ea3c672b1e8304e0a29a 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -868,7 +868,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
 	  mMetricsStartTime(0),
 	  mHttpHandle(LLCORE_HTTP_HANDLE_INVALID),
 	  mHttpBufferArray(NULL),
-	  mHttpPolicyClass(LLCore::HttpRequest::DEFAULT_POLICY_ID),
+	  mHttpPolicyClass(mFetcher->mHttpPolicyClass),
 	  mHttpActive(false),
 	  mHttpReplySize(0U),
 	  mHttpReplyOffset(0U),
@@ -2302,6 +2302,7 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image
 	  mHttpOptions(NULL),
 	  mHttpHeaders(NULL),
 	  mHttpMetricsHeaders(NULL),
+	  mHttpPolicyClass(LLCore::HttpRequest::DEFAULT_POLICY_ID),
 	  mHttpSemaphore(HTTP_REQUESTS_IN_QUEUE_HIGH_WATER),
 	  mTotalCacheReadCount(0U),
 	  mTotalCacheWriteCount(0U),
@@ -2324,6 +2325,7 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image
 	mHttpHeaders->mHeaders.push_back("Accept: image/x-j2c");
 	mHttpMetricsHeaders = new LLCore::HttpHeaders;
 	mHttpMetricsHeaders->mHeaders.push_back("Content-Type: application/llsd+xml");
+	mHttpPolicyClass = LLAppViewer::instance()->getAppCoreHttp().getPolicyDefault();
 }
 
 LLTextureFetch::~LLTextureFetch()
@@ -3631,7 +3633,6 @@ bool
 TFReqSendMetrics::doWork(LLTextureFetch * fetcher)
 {
 	static const U32 report_priority(1);
-	static const int report_policy_class(LLCore::HttpRequest::DEFAULT_POLICY_ID);
 	static LLCore::HttpHandler * const handler(fetcher->isQAMode() || true ? &stats_handler : NULL);
 	
 	if (! gViewerAssetStatsThread1)
@@ -3671,7 +3672,7 @@ TFReqSendMetrics::doWork(LLTextureFetch * fetcher)
 		LLCore::BufferArrayStream bas(ba);
 		LLSDSerialize::toXML(merged_llsd, bas);
 		
-		fetcher->getHttpRequest().requestPost(report_policy_class,
+		fetcher->getHttpRequest().requestPost(fetcher->getPolicyClass(),
 											  report_priority,
 											  mCapsURL,
 											  ba,
@@ -3797,7 +3798,7 @@ LLTextureFetchDebugger::LLTextureFetchDebugger(LLTextureFetch* fetcher, LLTextur
 	mTextureCache(cache),
 	mImageDecodeThread(imagedecodethread),
 	mHttpHeaders(NULL),
-	mHttpPolicyClass(LLCore::HttpRequest::DEFAULT_POLICY_ID)
+	mHttpPolicyClass(fetcher->getPolicyClass())
 {
 	init();
 }
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index 54ffeda8dff5460c003325e8f07a8c50c0b847d9..115e471bc9ab47a78c115e01186c2a0fad857ce8 100644
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -164,6 +164,9 @@ class LLTextureFetch : public LLWorkerThread
 	// Threads:  T*
 	LLCore::HttpRequest & getHttpRequest()	{ return *mHttpRequest; }
 
+	// Threads:  T*
+	LLCore::HttpRequest::policy_t getPolicyClass() const { return mHttpPolicyClass; }
+	
 	// Return a pointer to the shared metrics headers definition.
 	// Does not increment the reference count, caller is required
 	// to do that to hold a reference for any length of time.
@@ -339,10 +342,11 @@ class LLTextureFetch : public LLWorkerThread
 	// Interfaces and objects into the core http library used
 	// to make our HTTP requests.  These replace the various
 	// LLCurl interfaces used in the past.
-	LLCore::HttpRequest *		mHttpRequest;							// Ttf
-	LLCore::HttpOptions *		mHttpOptions;							// Ttf
-	LLCore::HttpHeaders *		mHttpHeaders;							// Ttf
-	LLCore::HttpHeaders *		mHttpMetricsHeaders;					// Ttf
+	LLCore::HttpRequest *				mHttpRequest;					// Ttf
+	LLCore::HttpOptions *				mHttpOptions;					// Ttf
+	LLCore::HttpHeaders *				mHttpHeaders;					// Ttf
+	LLCore::HttpHeaders *				mHttpMetricsHeaders;			// Ttf
+	LLCore::HttpRequest::policy_t		mHttpPolicyClass;				// T*
 
 	// We use a resource semaphore to keep HTTP requests in
 	// WAIT_HTTP_RESOURCE2 if there aren't sufficient slots in the