[tor-commits] [websocket/master] Added support for passing URLs

dcf at torproject.org dcf at torproject.org
Wed Sep 13 20:26:18 UTC 2017


commit 0446621630483a656f179963ca77451f04aeaf01
Author: Hooman <hoomanm at princeton.edu>
Date:   Thu Jul 20 15:31:27 2017 -0700

    Added support for passing URLs
---
 websocket/websocket.go | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/websocket/websocket.go b/websocket/websocket.go
index 7c649e3..b74e3ae 100644
--- a/websocket/websocket.go
+++ b/websocket/websocket.go
@@ -43,6 +43,7 @@ import (
 	"net"
 	"net/http"
 	"strings"
+	"net/url"
 )
 
 // Settings for potential WebSocket connections. Subprotocols is a list of
@@ -87,6 +88,9 @@ type WebSocket struct {
 	// Buffer for message payloads, which may be interrupted by control
 	// messages.
 	messageBuf bytes.Buffer
+	// Request URL
+	ReqURL url.URL
+
 }
 
 func applyMask(payload []byte, maskKey [4]byte) {
@@ -333,10 +337,14 @@ func (handler *HTTPHandler) ServeHTTP(w http.ResponseWriter, req *http.Request)
 		httpError(w, bufrw, http.StatusMethodNotAllowed)
 		return
 	}
+
+	/* URLs are accepted
 	if req.URL.Path != "/" {
 		httpError(w, bufrw, http.StatusNotFound)
 		return
 	}
+	*/
+
 	// 2. A |Host| header field containing the server's authority.
 	// We deliberately skip this test.
 	// 3. An |Upgrade| header field containing the value "websocket",
@@ -387,6 +395,7 @@ func (handler *HTTPHandler) ServeHTTP(w http.ResponseWriter, req *http.Request)
 	ws.Bufrw = bufrw
 	ws.IsClient = false
 	ws.MaxMessageSize = handler.Config.MaxMessageSize
+	ws.ReqURL =  *req.URL
 
 	// See RFC 6455 section 4.2.2, item 5 for these steps.
 





More information about the tor-commits mailing list