From 6acfc71103fd731e9966fa7000f2c71923f4fc4d Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Tue, 11 Apr 2023 20:28:24 +0100 Subject: [PATCH] Fix '?' at end of WebSocket path get escaped This fix align sing-box's behaviour with V2Ray when it comes to processing ? at the end of WebSocket's path. --- transport/v2raywebsocket/client.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/transport/v2raywebsocket/client.go b/transport/v2raywebsocket/client.go index bbcfa569..ea17455f 100644 --- a/transport/v2raywebsocket/client.go +++ b/transport/v2raywebsocket/client.go @@ -61,6 +61,10 @@ func NewClient(ctx context.Context, dialer N.Dialer, serverAddr M.Socksaddr, opt if !strings.HasPrefix(uri.Path, "/") { uri.Path = "/" + uri.Path } + if strings.HasSuffix(uri.Path, "?") { + uri.ForceQuery = true + uri.Path = strings.TrimSuffix(uri.Path, "?") + } headers := make(http.Header) for key, value := range options.Headers { headers[key] = value