diff --git a/indra/llmessage/llsocks5.cpp b/indra/llmessage/llsocks5.cpp
index 27a31e35b39452e29490dc65a5de55fb96f15d67..278350bf25e7baa0462f218970bd01d3e1cfb2eb 100644
--- a/indra/llmessage/llsocks5.cpp
+++ b/indra/llmessage/llsocks5.cpp
@@ -24,13 +24,16 @@
  * $/LicenseInfo$
  */
 
+#include "linden_common.h"
+
+#include "llsocks5.h"
+
 #include <string>
 
-#include "linden_common.h"
-#include "net.h"
+#include "llapr.h"
 #include "llhost.h"
 #include "message.h"
-#include "llsocks5.h"
+#include "net.h"
 
 // Static class variable instances
 
@@ -40,6 +43,12 @@
 bool LLSocks::sUDPProxyEnabled;
 bool LLSocks::sHTTPProxyEnabled;
 
+// Some helpful TCP functions
+static LLSocket::ptr_t tcp_open_channel(LLHost host); // Open a TCP channel to a given host
+static void tcp_close_channel(LLSocket::ptr_t handle); // Close an open TCP channel
+static int tcp_handshake(LLSocket::ptr_t handle, char * dataout, apr_size_t outlen, char * datain, apr_size_t maxinlen); // Do a TCP data handshake
+
+
 LLSocks::LLSocks()
 {
 	sUDPProxyEnabled  = false;
@@ -214,3 +223,63 @@ void LLSocks::enableHTTPProxy(LLHost httpHost, LLHttpProxyType type)
 	mHTTPProxy        = httpHost;
 	mProxyType        = type;
 }
+
+static int 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_size_t expected_len = outlen;
+
+    apr_socket_opt_set(apr_socket, APR_SO_NONBLOCK, -5); // Blocking connection, 5 second timeout
+    apr_socket_timeout_set(apr_socket, (APR_USEC_PER_SEC * 5));
+
+	rv = apr_socket_send(apr_socket, dataout, &outlen);
+	if (rv != APR_SUCCESS || expected_len != outlen)
+	{
+		llwarns << "Error sending data to proxy control channel" << llendl;
+		ll_apr_warn_status(rv);
+		return -1;
+	}
+
+	expected_len = maxinlen;
+	do
+	{
+		rv = apr_socket_recv(apr_socket, datain, &maxinlen);
+		llinfos << "Receiving packets." << llendl;
+		llwarns << "Proxy control channel status: " << rv << llendl;
+	} while (APR_STATUS_IS_EAGAIN(rv));
+
+	if (rv != APR_SUCCESS)
+	{
+		llwarns << "Error receiving data from proxy control channel, status: " << rv << llendl;
+		llwarns << "Received " << maxinlen << " bytes." << llendl;
+		ll_apr_warn_status(rv);
+		return rv;
+	}
+	else if (expected_len != maxinlen)
+	{
+		llwarns << "Incorrect data received length in proxy control channel" << llendl;
+		return -1;
+	}
+
+	return 0;
+}
+
+static LLSocket::ptr_t tcp_open_channel(LLHost host)
+{
+	LLSocket::ptr_t socket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);
+	bool connected = socket->blockingConnect(host);
+	if (!connected)
+	{
+		tcp_close_channel(socket);
+	}
+
+	return socket;
+}
+
+static void tcp_close_channel(LLSocket::ptr_t handle)
+{
+	handle.reset();
+}
+
diff --git a/indra/llmessage/llsocks5.h b/indra/llmessage/llsocks5.h
index 43a7c82fea5c78d90fb211c656a24487e2b5162f..3c10f661de77e2dd6b28b5fe832a50c9c4a74bd4 100644
--- a/indra/llmessage/llsocks5.h
+++ b/indra/llmessage/llsocks5.h
@@ -28,6 +28,7 @@
 #define LL_SOCKS5_H
 
 #include "llhost.h"
+#include "lliosocket.h"
 #include "llmemory.h"
 #include "llsingleton.h"
 #include <string>
diff --git a/indra/llmessage/net.cpp b/indra/llmessage/net.cpp
index 366a1835caebbe48424da0a59f916715f87d5896..e2d185b9591fe1c59de4a2a4ac38f2377faae41f 100644
--- a/indra/llmessage/net.cpp
+++ b/indra/llmessage/net.cpp
@@ -664,63 +664,4 @@ BOOL send_packet(int hSocket, const char * sendBuffer, int size, U32 recipient,
 
 #endif
 
-int 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_size_t expected_len = outlen;
-
-    apr_socket_opt_set(apr_socket, APR_SO_NONBLOCK, -5); // Blocking connection, 5 second timeout
-    apr_socket_timeout_set(apr_socket, (APR_USEC_PER_SEC * 5));
-
-	rv = apr_socket_send(apr_socket, dataout, &outlen);
-	if (rv != APR_SUCCESS || expected_len != outlen)
-	{
-		llwarns << "Error sending data to proxy control channel" << llendl;
-		ll_apr_warn_status(rv);
-		return -1;
-	}
-
-	expected_len = maxinlen;
-	do
-	{
-		rv = apr_socket_recv(apr_socket, datain, &maxinlen);
-		llinfos << "Receiving packets." << llendl;
-		llwarns << "Proxy control channel status: " << rv << llendl;
-	} while (APR_STATUS_IS_EAGAIN(rv));
-
-	if (rv != APR_SUCCESS)
-	{
-		llwarns << "Error receiving data from proxy control channel, status: " << rv << llendl;
-		llwarns << "Received " << maxinlen << " bytes." << llendl;
-		ll_apr_warn_status(rv);
-		return rv;
-	}
-	else if (expected_len != maxinlen)
-	{
-		llwarns << "Incorrect data received length in proxy control channel" << llendl;
-		return -1;
-	}
-
-	return 0;
-}
-
-LLSocket::ptr_t tcp_open_channel(LLHost host)
-{
-	LLSocket::ptr_t socket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);
-	bool connected = socket->blockingConnect(host);
-	if (!connected)
-	{
-		tcp_close_channel(socket);
-	}
-
-	return socket;
-}
-
-void tcp_close_channel(LLSocket::ptr_t handle)
-{
-	handle.reset();
-}
-
 //EOF
diff --git a/indra/llmessage/net.h b/indra/llmessage/net.h
index 0d91cf2a2f7828584796e56d4830c803a9c098b2..0f2437479df8bdd861091fd913a49705de931eef 100644
--- a/indra/llmessage/net.h
+++ b/indra/llmessage/net.h
@@ -27,9 +27,6 @@
 #ifndef LL_NET_H					
 #define LL_NET_H
 
-#include "lliosocket.h"
-#include "llapr.h"
-
 class LLTimer;
 class LLHost;
 
@@ -55,11 +52,6 @@ U32		get_sender_ip(void);
 LLHost	get_receiving_interface();
 U32		get_receiving_interface_ip(void);
 
-// Some helpful TCP functions
-LLSocket::ptr_t tcp_open_channel(LLHost host); // Open a TCP channel to a given host
-void tcp_close_channel(LLSocket::ptr_t handle); // Close an open TCP channel
-int tcp_handshake(LLSocket::ptr_t handle, char * dataout, apr_size_t outlen, char * datain, apr_size_t maxinlen); // Do a TCP data handshake
-
 const char*	u32_to_ip_string(U32 ip);					// Returns pointer to internal string buffer, "(bad IP addr)" on failure, cannot nest calls 
 char*		u32_to_ip_string(U32 ip, char *ip_string);	// NULL on failure, ip_string on success, you must allocate at least MAXADDRSTR chars
 U32			ip_string_to_u32(const char* ip_string);	// Wrapper for inet_addr()