[tor-commits] [snowflake/master] Pass the incoming client_ip into the ExtORPort.

dcf at torproject.org dcf at torproject.org
Sat Oct 14 19:12:34 UTC 2017


commit 9e5eb7f5ee1c15122425ab4fe47fa6ad6ec75f92
Author: David Fifield <david at bamsoftware.com>
Date:   Sat Oct 14 14:57:53 2017 -0400

    Pass the incoming client_ip into the ExtORPort.
---
 server/server.go | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/server/server.go b/server/server.go
index 3e29a0b..562ccf8 100644
--- a/server/server.go
+++ b/server/server.go
@@ -139,10 +139,18 @@ func webSocketHandler(ws *websocket.WebSocket) {
 		handlerChan <- -1
 	}()
 
-	// Pass an empty string for the client address. The remote address on
-	// the incoming connection reflects that of the browser proxy, not of
-	// the client. See https://bugs.torproject.org/18628.
-	or, err := pt.DialOr(&ptInfo, "", ptMethodName)
+	// Check if client addr is a valid IP
+	addr := ws.Request().URL.Query().Get("client_ip")
+	clientIP := net.ParseIP(addr)
+
+	if clientIP == nil {
+		// Set client addr to empty
+		addr = ""
+	}
+
+	// Pass the address of client as the remote address of incoming connection
+	or, err := pt.DialOr(&ptInfo, addr, ptMethodName)
+
 	if err != nil {
 		log.Printf("failed to connect to ORPort: %s", err)
 		return



More information about the tor-commits mailing list