diff --git a/transport/v2raygrpclite/client.go b/transport/v2raygrpclite/client.go index acf83abc..55f6a99f 100644 --- a/transport/v2raygrpclite/client.go +++ b/transport/v2raygrpclite/client.go @@ -12,6 +12,7 @@ import ( "github.com/sagernet/sing-box/common/tls" "github.com/sagernet/sing-box/option" "github.com/sagernet/sing-box/transport/v2rayhttp" + E "github.com/sagernet/sing/common/exceptions" M "github.com/sagernet/sing/common/metadata" N "github.com/sagernet/sing/common/network" @@ -94,6 +95,9 @@ func (c *Client) DialContext(ctx context.Context) (net.Conn, error) { response, err := c.transport.RoundTrip(request) if err == nil { conn.setup(response.Body, nil) + } else if response.StatusCode != 200 { + response.Body.Close() + conn.setup(nil, E.New("unexpected status: ", response.StatusCode, " ", response.Status)) } else { conn.setup(nil, err) } diff --git a/transport/v2rayhttp/client.go b/transport/v2rayhttp/client.go index 80ff13db..08bb0e87 100644 --- a/transport/v2rayhttp/client.go +++ b/transport/v2rayhttp/client.go @@ -145,6 +145,7 @@ func (c *Client) dialHTTP2(ctx context.Context) (net.Conn, error) { if err != nil { conn.setup(nil, err) } else if response.StatusCode != 200 { + response.Body.Close() conn.setup(nil, E.New("unexpected status: ", response.StatusCode, " ", response.Status)) } else { conn.setup(response.Body, nil)