diff --git a/indra/llmessage/llproxy.cpp b/indra/llmessage/llproxy.cpp
index d2e64e60acc54a3ea411f573bff6d565a9794b5d..bdffa34fbc1529d4ae77e401f04eea2cd708876e 100644
--- a/indra/llmessage/llproxy.cpp
+++ b/indra/llmessage/llproxy.cpp
@@ -85,7 +85,7 @@ S32 LLProxy::proxyHandshake(LLHost proxy, U32 message_port)
 	socks_auth_request.methods     = getSelectedAuthMethod(); // Send only the selected method.
 
 	result = tcp_handshake(mProxyControlChannel, (char*)&socks_auth_request, sizeof(socks_auth_request), (char*)&socks_auth_response, sizeof(socks_auth_response));
-	if (result != 0)
+	if (result != APR_SUCCESS)
 	{
 		LL_WARNS("Proxy") << "SOCKS authentication request failed, error on TCP control channel : " << result << LL_ENDL;
 		stopSOCKSProxy();
@@ -118,7 +118,7 @@ S32 LLProxy::proxyHandshake(LLHost proxy, U32 message_port)
 		result = tcp_handshake(mProxyControlChannel, password_auth, request_size, (char*)&password_reply, sizeof(password_reply));
 		delete[] password_auth;
 
-		if (result != 0)
+		if (result != APR_SUCCESS)
 		{
 			LL_WARNS("Proxy") << "SOCKS authentication failed, error on TCP control channel : " << result << LL_ENDL;
 			stopSOCKSProxy();
@@ -148,7 +148,7 @@ S32 LLProxy::proxyHandshake(LLHost proxy, U32 message_port)
 	//  the client MUST use a port number and address of all zeros. RFC 1928"
 
 	result = tcp_handshake(mProxyControlChannel, (char*)&connect_request, sizeof(connect_request), (char*)&connect_reply, sizeof(connect_reply));
-	if (result != 0)
+	if (result != APR_SUCCESS)
 	{
 		LL_WARNS("Proxy") << "SOCKS connect request failed, error on TCP control channel : " << result << LL_ENDL;
 		stopSOCKSProxy();
@@ -335,7 +335,6 @@ void LLProxy::applyProxySettings(LLCurlEasyRequest* handle)
 	applyProxySettings(handle->getEasy());
 }
 
-
 void LLProxy::applyProxySettings(LLCurl::Easy* handle)
 {
 	applyProxySettings(handle->getCurlHandle());
@@ -373,7 +372,6 @@ void LLProxy::applyProxySettings(CURL* handle)
 
 static S32 tcp_handshake(LLSocket::ptr_t handle, char * dataout, apr_size_t outlen, char * datain, apr_size_t maxinlen)
 {
-
 	apr_socket_t* apr_socket = handle->getSocket();
 	apr_status_t rv = APR_SUCCESS;
 
diff --git a/indra/llmessage/llproxy.h b/indra/llmessage/llproxy.h
index 68c40561c84757956225b212cb845360d7264661..534455a6ddab392ed94693e61989975bc6873b44 100644
--- a/indra/llmessage/llproxy.h
+++ b/indra/llmessage/llproxy.h
@@ -168,6 +168,7 @@ enum LLSocks5AuthType
 
 class LLProxy: public LLSingleton<LLProxy>
 {
+	LOG_CLASS(LLProxy);
 public:
 	LLProxy();
 	~LLProxy();
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index b01dc616a3d92cf01b30bc2590c0adf37262b7f1..61eac7bf14f16b3196542faf1710458c3ba1cb9c 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -334,17 +334,17 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mCommitCallbackRegistrar.add("Pref.ClickEnablePopup",		boost::bind(&LLFloaterPreference::onClickEnablePopup, this));
 	mCommitCallbackRegistrar.add("Pref.ClickDisablePopup",		boost::bind(&LLFloaterPreference::onClickDisablePopup, this));	
 	mCommitCallbackRegistrar.add("Pref.LogPath",				boost::bind(&LLFloaterPreference::onClickLogPath, this));
-	mCommitCallbackRegistrar.add("Pref.HardwareSettings",       boost::bind(&LLFloaterPreference::onOpenHardwareSettings, this));	
-	mCommitCallbackRegistrar.add("Pref.HardwareDefaults",       boost::bind(&LLFloaterPreference::setHardwareDefaults, this));	
-	mCommitCallbackRegistrar.add("Pref.VertexShaderEnable",     boost::bind(&LLFloaterPreference::onVertexShaderEnable, this));	
-	mCommitCallbackRegistrar.add("Pref.WindowedMod",            boost::bind(&LLFloaterPreference::onCommitWindowedMode, this));	
-	mCommitCallbackRegistrar.add("Pref.UpdateSliderText",       boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2));	
-	mCommitCallbackRegistrar.add("Pref.QualityPerformance",     boost::bind(&LLFloaterPreference::onChangeQuality, this, _2));	
+	mCommitCallbackRegistrar.add("Pref.HardwareSettings",		boost::bind(&LLFloaterPreference::onOpenHardwareSettings, this));
+	mCommitCallbackRegistrar.add("Pref.HardwareDefaults",		boost::bind(&LLFloaterPreference::setHardwareDefaults, this));
+	mCommitCallbackRegistrar.add("Pref.VertexShaderEnable",		boost::bind(&LLFloaterPreference::onVertexShaderEnable, this));
+	mCommitCallbackRegistrar.add("Pref.WindowedMod",			boost::bind(&LLFloaterPreference::onCommitWindowedMode, this));
+	mCommitCallbackRegistrar.add("Pref.UpdateSliderText",		boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2));
+	mCommitCallbackRegistrar.add("Pref.QualityPerformance",		boost::bind(&LLFloaterPreference::onChangeQuality, this, _2));
 	mCommitCallbackRegistrar.add("Pref.applyUIColor",			boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2));
 	mCommitCallbackRegistrar.add("Pref.getUIColor",				boost::bind(&LLFloaterPreference::getUIColor, this ,_1, _2));
 	mCommitCallbackRegistrar.add("Pref.MaturitySettings",		boost::bind(&LLFloaterPreference::onChangeMaturity, this));
 	mCommitCallbackRegistrar.add("Pref.BlockList",				boost::bind(&LLFloaterPreference::onClickBlockList, this));
-	mCommitCallbackRegistrar.add("Pref.Proxy",                    boost::bind(&LLFloaterPreference::onClickProxySettings, this));
+	mCommitCallbackRegistrar.add("Pref.Proxy",					boost::bind(&LLFloaterPreference::onClickProxySettings, this));
 	
 	sSkin = gSavedSettings.getString("SkinCurrent");
 
@@ -2033,6 +2033,9 @@ void LLFloaterPreferenceProxy::onBtnOk()
 		socks_authenticator["type"] = "SOCKS5";
 		socks_authenticator["creds"] = getChild<LLLineEditor>("socks5_password")->getValue().asString();
 
+		// Using "SOCKS5" as the "grid" argument since the same proxy
+		// settings will be used for all grids and because there is no
+		// way to specify the type of credential.
 		LLPointer<LLCredential> socks_cred = gSecAPIHandler->createCredential("SOCKS5", socks_id, socks_authenticator);
 		gSecAPIHandler->saveCredential(socks_cred, true);
 	}
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 25af63c0d30c9a06869bfe8e28034a7c22a34102..c5c143963bb9a935e734ffa53d196698e1eb0984 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -592,10 +592,10 @@ bool idle_startup()
 		}
 
 		LL_INFOS("AppInit") << "Message System Initialized." << LL_ENDL;
-		
+
 		//-------------------------------------------------
 		// Init the SOCKS 5 proxy and open the control TCP
-		// connection if the user is using SOCKS 5
+		// connection if the user has configured a Proxy
 		// We need to do this early in case the user is using
 		// socks for HTTP so we get the login screen via SOCKS
 		// We don't do anything if proxy setup was
@@ -604,6 +604,11 @@ bool idle_startup()
 		//-------------------------------------------------
 
 		LLStartUp::handleSocksProxy();
+		// If we started a proxy, try to grab the table files again.
+		if (LLProxy::getInstance()->isHTTPProxyEnabled())
+		{
+			LLFeatureManager::getInstance()->fetchHTTPTables();
+		}
 
 		//-------------------------------------------------
 		// Init audio, which may be needed for prefs dialog