|
|
@@ -82,7 +82,7 @@ func (this *VMessOutboundHandler) startCommunicate(request *protocol.VMessReques
|
|
|
responseFinish.Lock()
|
|
|
|
|
|
go this.handleRequest(conn, request, firstPacket, input, &requestFinish)
|
|
|
- go this.handleResponse(conn, request, output, &responseFinish, (request.Command == protocol.CmdUDP))
|
|
|
+ go this.handleResponse(conn, request, dest, output, &responseFinish, (request.Command == protocol.CmdUDP))
|
|
|
|
|
|
requestFinish.Lock()
|
|
|
conn.CloseWrite()
|
|
|
@@ -140,7 +140,7 @@ func headerMatch(request *protocol.VMessRequest, responseHeader byte) bool {
|
|
|
return request.ResponseHeader == responseHeader
|
|
|
}
|
|
|
|
|
|
-func (this *VMessOutboundHandler) handleResponse(conn net.Conn, request *protocol.VMessRequest, output chan<- *alloc.Buffer, finish *sync.Mutex, isUDP bool) {
|
|
|
+func (this *VMessOutboundHandler) handleResponse(conn net.Conn, request *protocol.VMessRequest, dest v2net.Destination, output chan<- *alloc.Buffer, finish *sync.Mutex, isUDP bool) {
|
|
|
defer finish.Unlock()
|
|
|
defer close(output)
|
|
|
responseKey := md5.Sum(request.RequestKey[:])
|
|
|
@@ -175,7 +175,7 @@ func (this *VMessOutboundHandler) handleResponse(conn net.Conn, request *protoco
|
|
|
}
|
|
|
command := buffer.Value[2]
|
|
|
data := buffer.Value[4 : 4+dataLen]
|
|
|
- go this.handleCommand(command, data)
|
|
|
+ go this.handleCommand(dest, command, data)
|
|
|
responseBegin = 4 + dataLen
|
|
|
}
|
|
|
|