breaking change: update the way in vmess response validation

pull/55/head
Darien Raymond 2015-12-01 13:54:49 +00:00
parent 56a79a2190
commit cab29a7bc9
2 changed files with 5 additions and 4 deletions

View File

@ -18,6 +18,7 @@ import (
"github.com/v2ray/v2ray-core/proxy/vmess/protocol/user"
)
// Inbound connection handler that handles messages in VMess format.
type VMessInboundHandler struct {
dispatcher app.PacketDispatcher
clients user.UserSet
@ -101,8 +102,8 @@ func (this *VMessInboundHandler) HandleConnection(connection *net.TCPConn) error
// Optimize for small response packet
buffer := alloc.NewLargeBuffer().Clear()
buffer.AppendBytes(request.ResponseHeader[0] | request.ResponseHeader[1])
buffer.AppendBytes(request.ResponseHeader[2] | request.ResponseHeader[3])
buffer.AppendBytes(request.ResponseHeader[0] ^ request.ResponseHeader[1])
buffer.AppendBytes(request.ResponseHeader[2] ^ request.ResponseHeader[3])
buffer.AppendBytes(byte(0), byte(0))
if data, open := <-output; open {

View File

@ -150,8 +150,8 @@ 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] ^ request.ResponseHeader[1]) == responseHeader[0]) &&
((request.ResponseHeader[2] ^ request.ResponseHeader[3]) == responseHeader[1])
}
func handleResponse(conn net.Conn, request *protocol.VMessRequest, output chan<- *alloc.Buffer, finish *sync.Mutex, isUDP bool) {