From f0952b55d01c6d57b49758d63eef33b3538b54cc Mon Sep 17 00:00:00 2001 From: LJea Date: Sun, 10 Jul 2022 15:56:34 +0900 Subject: [PATCH] Fix: query string parse on `ws-opts` (#2213) --- transport/vmess/websocket.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/transport/vmess/websocket.go b/transport/vmess/websocket.go index f769dcce..b7b369fd 100644 --- a/transport/vmess/websocket.go +++ b/transport/vmess/websocket.go @@ -256,10 +256,16 @@ func streamWebsocketConn(conn net.Conn, c *WebsocketConfig, earlyData *bytes.Buf dialer.TLSClientConfig = c.TLSConfig } + u, err := url.Parse(c.Path) + if err != nil { + return nil, fmt.Errorf("parse url %s error: %w", c.Path, err) + } + uri := url.URL{ - Scheme: scheme, - Host: net.JoinHostPort(c.Host, c.Port), - Path: c.Path, + Scheme: scheme, + Host: net.JoinHostPort(c.Host, c.Port), + Path: u.Path, + RawQuery: u.RawQuery, } headers := http.Header{}