浏览代码

Fix http2 transport close

世界 2 年之前
父节点
当前提交
19a35ec6a4
共有 3 个文件被更改,包括 24 次插入0 次删除
  1. 6 0
      transport/v2raygrpclite/client.go
  2. 5 0
      transport/v2rayhttp/client.go
  3. 13 0
      transport/v2rayhttp/pool.go

+ 6 - 0
transport/v2raygrpclite/client.go

@@ -12,6 +12,7 @@ import (
 	"github.com/sagernet/sing-box/adapter"
 	"github.com/sagernet/sing-box/common/tls"
 	"github.com/sagernet/sing-box/option"
+	"github.com/sagernet/sing-box/transport/v2rayhttp"
 	M "github.com/sagernet/sing/common/metadata"
 	N "github.com/sagernet/sing/common/network"
 
@@ -93,3 +94,8 @@ func (c *Client) DialContext(ctx context.Context) (net.Conn, error) {
 	}()
 	return conn, nil
 }
+
+func (c *Client) Close() error {
+	v2rayhttp.CloseIdleConnections(c.transport)
+	return nil
+}

+ 5 - 0
transport/v2rayhttp/client.go

@@ -167,3 +167,8 @@ func (c *Client) dialHTTP2(ctx context.Context) (net.Conn, error) {
 	}()
 	return conn, nil
 }
+
+func (c *Client) Close() error {
+	CloseIdleConnections(c.transport)
+	return nil
+}

+ 13 - 0
transport/v2rayhttp/pool.go

@@ -0,0 +1,13 @@
+package v2rayhttp
+
+import "net/http"
+
+type ConnectionPool interface {
+	CloseIdleConnections()
+}
+
+func CloseIdleConnections(transport http.RoundTripper) {
+	if connectionPool, ok := transport.(ConnectionPool); ok {
+		connectionPool.CloseIdleConnections()
+	}
+}