浏览代码

fix conn reuse

v2ray 9 年之前
父节点
当前提交
83c7e8491c
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      proxy/vmess/inbound/inbound.go

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

@@ -136,6 +136,7 @@ func (this *VMessInboundHandler) HandleConnection(connection *hub.Connection) {
 			log.Access(connection.RemoteAddr(), "", log.AccessRejected, err)
 			log.Warning("VMessIn: Invalid request from ", connection.RemoteAddr(), ": ", err)
 		}
+		connection.SetReusable(false)
 		return
 	}
 	log.Access(connection.RemoteAddr(), request.Destination(), log.AccessAccepted, "")
@@ -198,7 +199,9 @@ func (this *VMessInboundHandler) HandleConnection(connection *hub.Connection) {
 			v2writer = vmessio.NewAuthChunkWriter(v2writer)
 		}
 
-		v2writer.Write(data)
+		if err := v2writer.Write(data); err != nil {
+			connection.SetReusable(false)
+		}
 
 		writer.SetCached(false)
 
@@ -209,7 +212,9 @@ func (this *VMessInboundHandler) HandleConnection(connection *hub.Connection) {
 
 		output.Release()
 		if request.Option.Has(protocol.RequestOptionChunkStream) {
-			v2writer.Write(alloc.NewSmallBuffer().Clear())
+			if err := v2writer.Write(alloc.NewSmallBuffer().Clear()); err != nil {
+				connection.SetReusable(false)
+			}
 		}
 		v2writer.Release()
 	}