|
|
@@ -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) {
|