From df0eef770e019f2f91a7974fb5aecdeef66952bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Fri, 21 Apr 2023 17:44:05 +0800 Subject: [PATCH] Fix http response check Co-authored-by: armv9 <48624112+arm64v8a@users.noreply.github.com> --- transport/v2raygrpclite/client.go | 10 +++++++--- transport/v2rayhttp/client.go | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/transport/v2raygrpclite/client.go b/transport/v2raygrpclite/client.go index acf83abc..31461d33 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" @@ -92,10 +93,13 @@ func (c *Client) DialContext(ctx context.Context) (net.Conn, error) { conn := newLateGunConn(pipeInWriter) go func() { response, err := c.transport.RoundTrip(request) - if err == nil { - conn.setup(response.Body, nil) - } else { + 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) } }() return conn, nil 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)