mirror of https://github.com/v2ray/v2ray-core
Output debug info when parsing VMess request
parent
3e76c3f307
commit
7c64093a7a
|
@ -72,6 +72,7 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
|
|||
|
||||
nBytes, err := v2net.ReadAllBytes(reader, buffer.Value[:vmess.IDBytesLen])
|
||||
if err != nil {
|
||||
log.Debug("VMess: Failed to read request ID (%d bytes): %v", nBytes, err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
@ -82,6 +83,7 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
|
|||
|
||||
aesStream, err := v2crypto.NewAesDecryptionStream(userObj.ID().CmdKey(), user.Int64Hash(timeSec))
|
||||
if err != nil {
|
||||
log.Debug("VMess: Failed to create AES stream: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
@ -89,6 +91,7 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
|
|||
|
||||
nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[:41])
|
||||
if err != nil {
|
||||
log.Debug("VMess: Failed to read request header (%d bytes): %v", nBytes, err)
|
||||
return nil, err
|
||||
}
|
||||
bufferLen := nBytes
|
||||
|
@ -99,7 +102,7 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
|
|||
}
|
||||
|
||||
if request.Version != Version {
|
||||
log.Warning("Invalid protocol version %d", request.Version)
|
||||
log.Warning("VMess: Invalid protocol version %d", request.Version)
|
||||
return nil, proxy.InvalidProtocolVersion
|
||||
}
|
||||
|
||||
|
@ -112,30 +115,34 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
|
|||
|
||||
switch buffer.Value[40] {
|
||||
case addrTypeIPv4:
|
||||
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:45]) // 4 bytes
|
||||
nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:45]) // 4 bytes
|
||||
bufferLen += 4
|
||||
if err != nil {
|
||||
log.Debug("VMess: Failed to read target IPv4 (%d bytes): %v", nBytes, err)
|
||||
return nil, err
|
||||
}
|
||||
request.Address = v2net.IPAddress(buffer.Value[41:45])
|
||||
case addrTypeIPv6:
|
||||
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:57]) // 16 bytes
|
||||
nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:57]) // 16 bytes
|
||||
bufferLen += 16
|
||||
if err != nil {
|
||||
log.Debug("VMess: Failed to read target IPv6 (%d bytes): %v", nBytes, err)
|
||||
return nil, err
|
||||
}
|
||||
request.Address = v2net.IPAddress(buffer.Value[41:57])
|
||||
case addrTypeDomain:
|
||||
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:42])
|
||||
nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[41:42])
|
||||
if err != nil {
|
||||
log.Debug("VMess: Failed to read target domain (%d bytes): %v", nBytes, err)
|
||||
return nil, err
|
||||
}
|
||||
domainLength := int(buffer.Value[41])
|
||||
if domainLength == 0 {
|
||||
return nil, transport.CorruptedPacket
|
||||
}
|
||||
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[42:42+domainLength])
|
||||
nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[42:42+domainLength])
|
||||
if err != nil {
|
||||
log.Debug("VMess: Failed to read target domain (%d bytes): %v", nBytes, err)
|
||||
return nil, err
|
||||
}
|
||||
bufferLen += 1 + domainLength
|
||||
|
@ -143,8 +150,9 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
|
|||
request.Address = v2net.DomainAddress(string(domainBytes))
|
||||
}
|
||||
|
||||
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[bufferLen:bufferLen+4])
|
||||
nBytes, err = v2net.ReadAllBytes(decryptor, buffer.Value[bufferLen:bufferLen+4])
|
||||
if err != nil {
|
||||
log.Debug("VMess: Failed to read checksum (%d bytes): %v", nBytes, err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue