mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-02-20 23:47:21 -05:00
remove use of Buffer.Value
This commit is contained in:
parent
186bf1f141
commit
4bf8288cc2
@ -24,7 +24,7 @@ func (v *OutboundConnectionHandler) Dispatch(destination v2net.Destination, payl
|
|||||||
|
|
||||||
v.Destination = destination
|
v.Destination = destination
|
||||||
if !payload.IsEmpty() {
|
if !payload.IsEmpty() {
|
||||||
v.ConnOutput.Write(payload.Value)
|
v.ConnOutput.Write(payload.Bytes())
|
||||||
}
|
}
|
||||||
payload.Release()
|
payload.Release()
|
||||||
|
|
||||||
|
@ -40,14 +40,14 @@ func MarshalCommand(command interface{}, writer io.Writer) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
auth := Authenticate(buffer.Value)
|
auth := Authenticate(buffer.Bytes())
|
||||||
len := buffer.Len() + 4
|
len := buffer.Len() + 4
|
||||||
if len > 255 {
|
if len > 255 {
|
||||||
return ErrCommandTooLarge
|
return ErrCommandTooLarge
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.Write([]byte{cmdId, byte(len), byte(auth >> 24), byte(auth >> 16), byte(auth >> 8), byte(auth)})
|
writer.Write([]byte{cmdId, byte(len), byte(auth >> 24), byte(auth >> 16), byte(auth >> 8), byte(auth)})
|
||||||
writer.Write(buffer.Value)
|
writer.Write(buffer.Bytes())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ func TestSwitchAccount(t *testing.T) {
|
|||||||
err := MarshalCommand(sa, buffer)
|
err := MarshalCommand(sa, buffer)
|
||||||
assert.Error(err).IsNil()
|
assert.Error(err).IsNil()
|
||||||
|
|
||||||
cmd, err := UnmarshalCommand(1, buffer.Value[2:])
|
cmd, err := UnmarshalCommand(1, buffer.BytesFrom(2))
|
||||||
assert.Error(err).IsNil()
|
assert.Error(err).IsNil()
|
||||||
|
|
||||||
sa2, ok := cmd.(*protocol.CommandSwitchAccount)
|
sa2, ok := cmd.(*protocol.CommandSwitchAccount)
|
||||||
|
@ -19,11 +19,11 @@ func TestAuthenticate(t *testing.T) {
|
|||||||
buffer := alloc.NewBuffer().Clear()
|
buffer := alloc.NewBuffer().Clear()
|
||||||
buffer.AppendBytes(1, 2, 3, 4)
|
buffer.AppendBytes(1, 2, 3, 4)
|
||||||
Authenticate(buffer)
|
Authenticate(buffer)
|
||||||
assert.Bytes(buffer.Value).Equals([]byte{0, 8, 87, 52, 168, 125, 1, 2, 3, 4})
|
assert.Bytes(buffer.Bytes()).Equals([]byte{0, 8, 87, 52, 168, 125, 1, 2, 3, 4})
|
||||||
|
|
||||||
b2, err := NewAuthChunkReader(buffer).Read()
|
b2, err := NewAuthChunkReader(buffer).Read()
|
||||||
assert.Error(err).IsNil()
|
assert.Error(err).IsNil()
|
||||||
assert.Bytes(b2.Value).Equals([]byte{1, 2, 3, 4})
|
assert.Bytes(b2.Bytes()).Equals([]byte{1, 2, 3, 4})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSingleIO(t *testing.T) {
|
func TestSingleIO(t *testing.T) {
|
||||||
@ -39,7 +39,7 @@ func TestSingleIO(t *testing.T) {
|
|||||||
reader := NewAuthChunkReader(content)
|
reader := NewAuthChunkReader(content)
|
||||||
buffer, err := reader.Read()
|
buffer, err := reader.Read()
|
||||||
assert.Error(err).IsNil()
|
assert.Error(err).IsNil()
|
||||||
assert.Bytes(buffer.Value).Equals([]byte("abcd"))
|
assert.String(buffer.String()).Equals("abcd")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLargeIO(t *testing.T) {
|
func TestLargeIO(t *testing.T) {
|
||||||
@ -73,7 +73,7 @@ func TestLargeIO(t *testing.T) {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
assert.Error(err).IsNil()
|
assert.Error(err).IsNil()
|
||||||
actualContent = append(actualContent, buffer.Value...)
|
actualContent = append(actualContent, buffer.Bytes()...)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.Int(len(actualContent)).Equals(len(content))
|
assert.Int(len(actualContent)).Equals(len(content))
|
||||||
|
@ -61,9 +61,9 @@ func (v *AuthChunkReader) Read() (*alloc.Buffer, error) {
|
|||||||
return nil, io.ErrUnexpectedEOF
|
return nil, io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
length := serial.BytesToUint16(buffer.Value[:2])
|
length := serial.BytesToUint16(buffer.BytesTo(2))
|
||||||
v.chunkLength = int(length) - 4
|
v.chunkLength = int(length) - 4
|
||||||
v.validator = NewValidator(serial.BytesToUint32(buffer.Value[2:6]))
|
v.validator = NewValidator(serial.BytesToUint32(buffer.BytesRange(2, 6)))
|
||||||
buffer.SliceFrom(6)
|
buffer.SliceFrom(6)
|
||||||
if buffer.Len() < v.chunkLength && v.chunkLength <= 2048 {
|
if buffer.Len() < v.chunkLength && v.chunkLength <= 2048 {
|
||||||
_, err := buffer.FillFrom(v.reader)
|
_, err := buffer.FillFrom(v.reader)
|
||||||
@ -86,10 +86,10 @@ func (v *AuthChunkReader) Read() (*alloc.Buffer, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if buffer.Len() < v.chunkLength {
|
if buffer.Len() < v.chunkLength {
|
||||||
v.validator.Consume(buffer.Value)
|
v.validator.Consume(buffer.Bytes())
|
||||||
v.chunkLength -= buffer.Len()
|
v.chunkLength -= buffer.Len()
|
||||||
} else {
|
} else {
|
||||||
v.validator.Consume(buffer.Value[:v.chunkLength])
|
v.validator.Consume(buffer.BytesTo(v.chunkLength))
|
||||||
if !v.validator.Validate() {
|
if !v.validator.Validate() {
|
||||||
buffer.Release()
|
buffer.Release()
|
||||||
return nil, errors.New("VMess|AuthChunkReader: Invalid auth.")
|
return nil, errors.New("VMess|AuthChunkReader: Invalid auth.")
|
||||||
@ -97,7 +97,7 @@ func (v *AuthChunkReader) Read() (*alloc.Buffer, error) {
|
|||||||
leftLength := buffer.Len() - v.chunkLength
|
leftLength := buffer.Len() - v.chunkLength
|
||||||
if leftLength > 0 {
|
if leftLength > 0 {
|
||||||
v.last = alloc.NewBuffer().Clear()
|
v.last = alloc.NewBuffer().Clear()
|
||||||
v.last.Append(buffer.Value[v.chunkLength:])
|
v.last.Append(buffer.BytesFrom(v.chunkLength))
|
||||||
buffer.Slice(0, v.chunkLength)
|
buffer.Slice(0, v.chunkLength)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ func (v *AuthChunkWriter) Release() {
|
|||||||
|
|
||||||
func Authenticate(buffer *alloc.Buffer) {
|
func Authenticate(buffer *alloc.Buffer) {
|
||||||
fnvHash := fnv.New32a()
|
fnvHash := fnv.New32a()
|
||||||
fnvHash.Write(buffer.Value)
|
fnvHash.Write(buffer.Bytes())
|
||||||
buffer.PrependHash(fnvHash)
|
buffer.PrependHash(fnvHash)
|
||||||
|
|
||||||
buffer.PrependUint16(uint16(buffer.Len()))
|
buffer.PrependUint16(uint16(buffer.Len()))
|
||||||
|
@ -21,7 +21,7 @@ func (v *SimpleAuthenticator) Overhead() int {
|
|||||||
func (v *SimpleAuthenticator) Seal(buffer *alloc.Buffer) {
|
func (v *SimpleAuthenticator) Seal(buffer *alloc.Buffer) {
|
||||||
buffer.PrependUint16(uint16(buffer.Len()))
|
buffer.PrependUint16(uint16(buffer.Len()))
|
||||||
fnvHash := fnv.New32a()
|
fnvHash := fnv.New32a()
|
||||||
fnvHash.Write(buffer.Value)
|
fnvHash.Write(buffer.Bytes())
|
||||||
buffer.PrependHash(fnvHash)
|
buffer.PrependHash(fnvHash)
|
||||||
|
|
||||||
len := buffer.Len()
|
len := buffer.Len()
|
||||||
@ -29,7 +29,7 @@ func (v *SimpleAuthenticator) Seal(buffer *alloc.Buffer) {
|
|||||||
if xtra != 0 {
|
if xtra != 0 {
|
||||||
buffer.Slice(0, len+xtra)
|
buffer.Slice(0, len+xtra)
|
||||||
}
|
}
|
||||||
xorfwd(buffer.Value)
|
xorfwd(buffer.Bytes())
|
||||||
if xtra != 0 {
|
if xtra != 0 {
|
||||||
buffer.Slice(0, len)
|
buffer.Slice(0, len)
|
||||||
}
|
}
|
||||||
@ -41,7 +41,7 @@ func (v *SimpleAuthenticator) Open(buffer *alloc.Buffer) bool {
|
|||||||
if xtra != 0 {
|
if xtra != 0 {
|
||||||
buffer.Slice(0, len+xtra)
|
buffer.Slice(0, len+xtra)
|
||||||
}
|
}
|
||||||
xorbkd(buffer.Value)
|
xorbkd(buffer.Bytes())
|
||||||
if xtra != 0 {
|
if xtra != 0 {
|
||||||
buffer.Slice(0, len)
|
buffer.Slice(0, len)
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ func TestSimpleAuthenticator(t *testing.T) {
|
|||||||
auth.Seal(buffer)
|
auth.Seal(buffer)
|
||||||
|
|
||||||
assert.Bool(auth.Open(buffer)).IsTrue()
|
assert.Bool(auth.Open(buffer)).IsTrue()
|
||||||
assert.Bytes(buffer.Value).Equals([]byte{'a', 'b', 'c', 'd', 'e', 'f', 'g'})
|
assert.Bytes(buffer.Bytes()).Equals([]byte{'a', 'b', 'c', 'd', 'e', 'f', 'g'})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSimpleAuthenticator2(t *testing.T) {
|
func TestSimpleAuthenticator2(t *testing.T) {
|
||||||
@ -37,8 +37,7 @@ func TestSimpleAuthenticator2(t *testing.T) {
|
|||||||
|
|
||||||
func BenchmarkSimpleAuthenticator(b *testing.B) {
|
func BenchmarkSimpleAuthenticator(b *testing.B) {
|
||||||
buffer := alloc.NewLocalBuffer(2048).Clear()
|
buffer := alloc.NewLocalBuffer(2048).Clear()
|
||||||
buffer.Slice(0, 1024)
|
buffer.FillFullFrom(rand.Reader, 1024)
|
||||||
rand.Read(buffer.Value)
|
|
||||||
|
|
||||||
auth := NewSimpleAuthenticator()
|
auth := NewSimpleAuthenticator()
|
||||||
b.SetBytes(int64(buffer.Len()))
|
b.SetBytes(int64(buffer.Len()))
|
||||||
|
@ -38,7 +38,7 @@ func TestDataSegment(t *testing.T) {
|
|||||||
assert.Uint32(seg2.Timestamp).Equals(seg.Timestamp)
|
assert.Uint32(seg2.Timestamp).Equals(seg.Timestamp)
|
||||||
assert.Uint32(seg2.SendingNext).Equals(seg.SendingNext)
|
assert.Uint32(seg2.SendingNext).Equals(seg.SendingNext)
|
||||||
assert.Uint32(seg2.Number).Equals(seg.Number)
|
assert.Uint32(seg2.Number).Equals(seg.Number)
|
||||||
assert.Bytes(seg2.Data.Value).Equals(seg.Data.Value)
|
assert.Bytes(seg2.Data.Bytes()).Equals(seg.Data.Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestACKSegment(t *testing.T) {
|
func TestACKSegment(t *testing.T) {
|
||||||
|
@ -136,7 +136,7 @@ func (v *UDPHub) start() {
|
|||||||
oobBytes := make([]byte, 256)
|
oobBytes := make([]byte, 256)
|
||||||
for v.Running() {
|
for v.Running() {
|
||||||
buffer := alloc.NewSmallBuffer()
|
buffer := alloc.NewSmallBuffer()
|
||||||
nBytes, noob, _, addr, err := ReadUDPMsg(v.conn, buffer.Value, oobBytes)
|
nBytes, noob, _, addr, err := ReadUDPMsg(v.conn, buffer.Bytes(), oobBytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Info("UDP|Hub: Failed to read UDP msg: ", err)
|
log.Info("UDP|Hub: Failed to read UDP msg: ", err)
|
||||||
buffer.Release()
|
buffer.Release()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user