From 88e04ab2ab2a13cd660f33e64c52ad3375144d2a Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Thu, 30 Aug 2018 16:25:45 -0400
Subject: [PATCH] Restore the ability for sockets to specify the interface to
 listen on

---
 indra/llmessage/lliosocket.cpp | 4 ++--
 indra/llmessage/lliosocket.h   | 4 +++-
 indra/test/io.cpp              | 3 ++-
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp
index b7460df508c..b15b98db806 100644
--- a/indra/llmessage/lliosocket.cpp
+++ b/indra/llmessage/lliosocket.cpp
@@ -101,7 +101,7 @@ void ll_debug_socket(const char* msg, apr_socket_t* apr_sock)
 ///
 
 // static
-LLSocket::ptr_t LLSocket::create(apr_pool_t* pool, EType type, U16 port)
+LLSocket::ptr_t LLSocket::create(apr_pool_t* pool, EType type, U16 port, const char *hostname)
 {
 	LLSocket::ptr_t rv;
 	apr_socket_t* socket = NULL;
@@ -150,7 +150,7 @@ LLSocket::ptr_t LLSocket::create(apr_pool_t* pool, EType type, U16 port)
 		apr_sockaddr_t* sa = NULL;
 		status = apr_sockaddr_info_get(
 			&sa,
-			APR_ANYADDR,
+			hostname,
 			APR_UNSPEC,
 			port,
 			0,
diff --git a/indra/llmessage/lliosocket.h b/indra/llmessage/lliosocket.h
index f840f0275c1..303d80eb142 100644
--- a/indra/llmessage/lliosocket.h
+++ b/indra/llmessage/lliosocket.h
@@ -96,12 +96,14 @@ class LLSocket
 	 * and associated with the socket.
 	 * @param type The type of socket to create
 	 * @param port The port for the socket
+	 * @param hostname e.g. APR_ANYADDR to listen openly, or "127.0.0.1"
 	 * @return A valid socket shared pointer if the call worked.
 	 */
 	static ptr_t create(
 		apr_pool_t* pool,
 		EType type,
-		U16 port = PORT_EPHEMERAL);
+		U16 port = PORT_EPHEMERAL,
+		const char *hostname = APR_ANYADDR);
 
 	/** 
 	 * @brief Create a LLSocket when you already have an apr socket.
diff --git a/indra/test/io.cpp b/indra/test/io.cpp
index ff900ab96be..40243a8ad6e 100644
--- a/indra/test/io.cpp
+++ b/indra/test/io.cpp
@@ -914,7 +914,8 @@ namespace tut
 			mSocket = LLSocket::create(
 				mPool,
 				LLSocket::STREAM_TCP,
-				SERVER_LISTEN_PORT);
+				SERVER_LISTEN_PORT,
+				"127.0.0.1");
 		}
 
 		~pipe_and_pump_fitness()
-- 
GitLab