remove closure on ReadFullFrom

This commit is contained in:
Darien Raymond
2018-11-02 15:01:33 +01:00
parent 9360448c59
commit 58e2ed3381
27 changed files with 158 additions and 90 deletions
+4 -4
View File
@@ -36,7 +36,7 @@ func ReadTCPSession(user *protocol.MemoryUser, reader io.Reader) (*protocol.Requ
ivLen := account.Cipher.IVSize()
var iv []byte
if ivLen > 0 {
if err := buffer.AppendSupplier(buf.ReadFullFrom(reader, ivLen)); err != nil {
if _, err := buffer.ReadFullFrom(reader, ivLen); err != nil {
return nil, nil, newError("failed to read IV").Base(err)
}
@@ -85,7 +85,7 @@ func ReadTCPSession(user *protocol.MemoryUser, reader io.Reader) (*protocol.Requ
actualAuth := make([]byte, AuthSize)
authenticator.Authenticate(buffer.Bytes())(actualAuth)
err := buffer.AppendSupplier(buf.ReadFullFrom(br, AuthSize))
_, err := buffer.ReadFullFrom(br, AuthSize)
if err != nil {
return nil, nil, newError("Failed to read OTA").Base(err)
}
@@ -196,7 +196,7 @@ func EncodeUDPPacket(request *protocol.RequestHeader, payload []byte) (*buf.Buff
buffer := buf.New()
ivLen := account.Cipher.IVSize()
if ivLen > 0 {
common.Must(buffer.Reset(buf.ReadFullFrom(rand.Reader, ivLen)))
common.Must2(buffer.ReadFullFrom(rand.Reader, ivLen))
}
iv := buffer.Bytes()
@@ -287,7 +287,7 @@ type UDPReader struct {
func (v *UDPReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
buffer := buf.New()
err := buffer.AppendSupplier(buf.ReadFrom(v.Reader))
_, err := buffer.ReadFrom(v.Reader)
if err != nil {
buffer.Release()
return nil, err
+22 -14
View File
@@ -7,7 +7,7 @@ import (
"v2ray.com/core/common/buf"
"v2ray.com/core/common/net"
"v2ray.com/core/common/protocol"
"v2ray.com/core/common/serial"
"v2ray.com/core/common/vio"
)
const (
@@ -49,7 +49,7 @@ func (s *ServerSession) Handshake(reader io.Reader, writer io.Writer) (*protocol
request := new(protocol.RequestHeader)
if err := buffer.AppendSupplier(buf.ReadFullFrom(reader, 2)); err != nil {
if _, err := buffer.ReadFullFrom(reader, 2); err != nil {
return nil, newError("insufficient header").Base(err)
}
@@ -60,7 +60,7 @@ func (s *ServerSession) Handshake(reader io.Reader, writer io.Writer) (*protocol
return nil, newError("socks 4 is not allowed when auth is required.")
}
if err := buffer.AppendSupplier(buf.ReadFullFrom(reader, 6)); err != nil {
if _, err := buffer.ReadFullFrom(reader, 6); err != nil {
return nil, newError("insufficient header").Base(err)
}
port := net.PortFromBytes(buffer.BytesRange(2, 4))
@@ -94,7 +94,7 @@ func (s *ServerSession) Handshake(reader io.Reader, writer io.Writer) (*protocol
if version == socks5Version {
nMethod := int32(buffer.Byte(1))
if err := buffer.AppendSupplier(buf.ReadFullFrom(reader, nMethod)); err != nil {
if _, err := buffer.ReadFullFrom(reader, nMethod); err != nil {
return nil, newError("failed to read auth methods").Base(err)
}
@@ -127,7 +127,9 @@ func (s *ServerSession) Handshake(reader io.Reader, writer io.Writer) (*protocol
return nil, newError("failed to write auth response").Base(err)
}
}
if err := buffer.Reset(buf.ReadFullFrom(reader, 3)); err != nil {
buffer.Clear()
if _, err := buffer.ReadFullFrom(reader, 3); err != nil {
return nil, newError("failed to read request").Base(err)
}
@@ -185,21 +187,25 @@ func readUsernamePassword(reader io.Reader) (string, string, error) {
buffer := buf.New()
defer buffer.Release()
if err := buffer.Reset(buf.ReadFullFrom(reader, 2)); err != nil {
if _, err := buffer.ReadFullFrom(reader, 2); err != nil {
return "", "", err
}
nUsername := int32(buffer.Byte(1))
if err := buffer.Reset(buf.ReadFullFrom(reader, nUsername)); err != nil {
buffer.Clear()
if _, err := buffer.ReadFullFrom(reader, nUsername); err != nil {
return "", "", err
}
username := buffer.String()
if err := buffer.Reset(buf.ReadFullFrom(reader, 1)); err != nil {
buffer.Clear()
if _, err := buffer.ReadFullFrom(reader, 1); err != nil {
return "", "", err
}
nPassword := int32(buffer.Byte(0))
if err := buffer.Reset(buf.ReadFullFrom(reader, nPassword)); err != nil {
buffer.Clear()
if _, err := buffer.ReadFullFrom(reader, nPassword); err != nil {
return "", "", err
}
password := buffer.String()
@@ -254,7 +260,7 @@ func writeSocks4Response(writer io.Writer, errCode byte, address net.Address, po
defer buffer.Release()
common.Must2(buffer.WriteBytes(0x00, errCode))
common.Must(buffer.AppendSupplier(serial.WriteUint16(port.Value())))
common.Must2(vio.WriteUint16(buffer, port.Value()))
common.Must2(buffer.Write(address.IP()))
return buf.WriteAllBytes(writer, buffer.Bytes())
}
@@ -305,7 +311,7 @@ func NewUDPReader(reader io.Reader) *UDPReader {
func (r *UDPReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
b := buf.New()
if err := b.AppendSupplier(buf.ReadFrom(r.reader)); err != nil {
if _, err := b.ReadFrom(r.reader); err != nil {
return nil, err
}
if _, err := DecodeUDPPacket(b); err != nil {
@@ -362,7 +368,8 @@ func ClientHandshake(request *protocol.RequestHeader, reader io.Reader, writer i
return nil, err
}
if err := b.Reset(buf.ReadFullFrom(reader, 2)); err != nil {
b.Clear()
if _, err := b.ReadFullFrom(reader, 2); err != nil {
return nil, err
}
@@ -374,7 +381,8 @@ func ClientHandshake(request *protocol.RequestHeader, reader io.Reader, writer i
}
if authByte == authPassword {
if err := b.Reset(buf.ReadFullFrom(reader, 2)); err != nil {
b.Clear()
if _, err := b.ReadFullFrom(reader, 2); err != nil {
return nil, err
}
if b.Byte(1) != 0x00 {
@@ -398,7 +406,7 @@ func ClientHandshake(request *protocol.RequestHeader, reader io.Reader, writer i
}
b.Clear()
if err := b.AppendSupplier(buf.ReadFullFrom(reader, 3)); err != nil {
if _, err := b.ReadFullFrom(reader, 3); err != nil {
return nil, err
}
+4 -3
View File
@@ -80,7 +80,7 @@ func (c *ClientSession) EncodeRequestHeader(header *protocol.RequestHeader, writ
}
if padingLen > 0 {
common.Must(buffer.AppendSupplier(buf.ReadFullFrom(rand.Reader, int32(padingLen))))
common.Must2(buffer.ReadFullFrom(rand.Reader, int32(padingLen)))
}
{
@@ -164,7 +164,7 @@ func (c *ClientSession) DecodeResponseHeader(reader io.Reader) (*protocol.Respon
buffer := buf.New()
defer buffer.Release()
if err := buffer.AppendSupplier(buf.ReadFullFrom(c.responseReader, 4)); err != nil {
if _, err := buffer.ReadFullFrom(c.responseReader, 4); err != nil {
return nil, newError("failed to read response header").Base(err)
}
@@ -180,7 +180,8 @@ func (c *ClientSession) DecodeResponseHeader(reader io.Reader) (*protocol.Respon
cmdID := buffer.Byte(2)
dataLen := int32(buffer.Byte(3))
if err := buffer.Reset(buf.ReadFullFrom(c.responseReader, dataLen)); err != nil {
buffer.Clear()
if _, err := buffer.ReadFullFrom(c.responseReader, dataLen); err != nil {
return nil, newError("failed to read response command").Base(err)
}
command, err := UnmarshalCommand(cmdID, buffer.Bytes())
+5 -4
View File
@@ -125,7 +125,7 @@ func (s *ServerSession) DecodeRequestHeader(reader io.Reader) (*protocol.Request
buffer := buf.New()
defer buffer.Release()
if err := buffer.AppendSupplier(buf.ReadFullFrom(reader, protocol.IDBytesLen)); err != nil {
if _, err := buffer.ReadFullFrom(reader, protocol.IDBytesLen); err != nil {
return nil, newError("failed to read request header").Base(err)
}
@@ -140,7 +140,8 @@ func (s *ServerSession) DecodeRequestHeader(reader io.Reader) (*protocol.Request
aesStream := crypto.NewAesDecryptionStream(vmessAccount.ID.CmdKey(), iv[:])
decryptor := crypto.NewCryptionReader(aesStream, reader)
if err := buffer.Reset(buf.ReadFullFrom(decryptor, 38)); err != nil {
buffer.Clear()
if _, err := buffer.ReadFullFrom(decryptor, 38); err != nil {
return nil, newError("failed to read request header").Base(err)
}
@@ -178,12 +179,12 @@ func (s *ServerSession) DecodeRequestHeader(reader io.Reader) (*protocol.Request
}
if padingLen > 0 {
if err := buffer.AppendSupplier(buf.ReadFullFrom(decryptor, int32(padingLen))); err != nil {
if _, err := buffer.ReadFullFrom(decryptor, int32(padingLen)); err != nil {
return nil, newError("failed to read padding").Base(err)
}
}
if err := buffer.AppendSupplier(buf.ReadFullFrom(decryptor, 4)); err != nil {
if _, err := buffer.ReadFullFrom(decryptor, 4); err != nil {
return nil, newError("failed to read checksum").Base(err)
}