From 84bd9977429124b061157c1d1a3e1d264b287010 Mon Sep 17 00:00:00 2001 From: "Xiaokang Wang (Shelikhoo)" Date: Wed, 12 Apr 2023 00:25:27 +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