浏览代码

try fix connection reuse settings

Darien Raymond 9 年之前
父节点
当前提交
a67d525fc2

+ 1 - 1
proxy/vmess/encoding/encoding_test.go

@@ -30,7 +30,7 @@ func TestRequestSerialization(t *testing.T) {
 		Version:  1,
 		User:     user,
 		Command:  protocol.RequestCommandTCP,
-		Option:   protocol.RequestOption(0),
+		Option:   protocol.RequestOptionConnectionReuse,
 		Address:  v2net.DomainAddress("www.v2ray.com"),
 		Port:     v2net.Port(443),
 		Security: protocol.Security(protocol.SecurityType_AES128_GCM),

+ 2 - 0
proxy/vmess/inbound/inbound.go

@@ -153,6 +153,8 @@ func (v *VMessInboundHandler) HandleConnection(connection internet.Connection) {
 	request, err := session.DecodeRequestHeader(reader)
 	v.RUnlock()
 
+	connection.SetReusable(request.Option.Has(protocol.RequestOptionConnectionReuse))
+
 	if err != nil {
 		if errors.Cause(err) != io.EOF {
 			log.Access(connection.RemoteAddr(), "", log.AccessRejected, err)

+ 1 - 3
proxy/vmess/outbound/outbound.go

@@ -138,9 +138,7 @@ func (v *VMessOutboundHandler) handleResponse(session *encoding.ClientSession, c
 	}
 	go v.handleCommand(dest, header.Command)
 
-	if !header.Option.Has(protocol.ResponseOptionConnectionReuse) {
-		conn.SetReusable(false)
-	}
+	conn.SetReusable(header.Option.Has(protocol.ResponseOptionConnectionReuse))
 
 	reader.SetCached(false)
 	bodyReader := session.DecodeResponseBody(request, reader)

+ 1 - 4
transport/internet/tcp/connection.go

@@ -93,14 +93,11 @@ func (v *Connection) SetWriteDeadline(t time.Time) error {
 }
 
 func (v *Connection) SetReusable(reusable bool) {
-	if !v.config.ConnectionReuse.IsEnabled() {
-		return
-	}
 	v.reusable = reusable
 }
 
 func (v *Connection) Reusable() bool {
-	return v.reusable
+	return v.config.ConnectionReuse.IsEnabled() && v.reusable
 }
 
 func (v *Connection) SysFd() (int, error) {