diff --git a/proxy/vmess/outbound/outbound.go b/proxy/vmess/outbound/outbound.go index 47fc32b50..67e2d5580 100644 --- a/proxy/vmess/outbound/outbound.go +++ b/proxy/vmess/outbound/outbound.go @@ -40,7 +40,10 @@ func (this *VMessOutboundHandler) Dispatch(firstPacket v2net.Packet, ray ray.Out buffer := alloc.NewSmallBuffer() defer buffer.Release() // Buffer is released after communication finishes. - v2net.ReadAllBytes(rand.Reader, buffer.Value[:36]) // 16 + 16 + 4 + v2net.ReadAllBytes(rand.Reader, buffer.Value[:33]) // 16 + 16 + 1 + buffer.Value[33] = 0 + buffer.Value[34] = 0 + buffer.Value[35] = 0 request.RequestIV = buffer.Value[:16] request.RequestKey = buffer.Value[16:32] request.ResponseHeader = buffer.Value[32:36] @@ -137,8 +140,7 @@ func handleRequest(conn net.Conn, request *protocol.VMessRequest, firstPacket v2 } func headerMatch(request *protocol.VMessRequest, responseHeader []byte) bool { - return ((request.ResponseHeader[0] ^ request.ResponseHeader[1]) == responseHeader[0]) && - ((request.ResponseHeader[2] ^ request.ResponseHeader[3]) == responseHeader[1]) + return (request.ResponseHeader[0] == responseHeader[0]) } func handleResponse(conn net.Conn, request *protocol.VMessRequest, output chan<- *alloc.Buffer, finish *sync.Mutex, isUDP bool) {