mirror of
https://github.com/v2ray/v2ray-core.git
synced 2026-11-13 22:45:13 +00:00
refactor buffer
This commit is contained in:
53 files changed
+220
-284
No files matched your search
@@ -3,12 +3,13 @@ package protocol
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
|
||||
"v2ray.com/core/common/buf"
|
||||
"v2ray.com/core/common/crypto"
|
||||
"v2ray.com/core/common/errors"
|
||||
"v2ray.com/core/common/log"
|
||||
v2net "v2ray.com/core/common/net"
|
||||
"v2ray.com/core/proxy"
|
||||
"v2ray.com/core/common/crypto"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -120,10 +121,10 @@ func (request Socks5UserPassRequest) AuthDetail() string {
|
||||
}
|
||||
|
||||
func ReadUserPassRequest(reader io.Reader) (request Socks5UserPassRequest, err error) {
|
||||
buffer := buf.NewLocalBuffer(512)
|
||||
buffer := buf.NewLocal(512)
|
||||
defer buffer.Release()
|
||||
|
||||
_, err = buffer.FillFullFrom(reader, 2)
|
||||
err = buffer.AppendSupplier(buf.ReadFullFrom(reader, 2))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -131,18 +132,18 @@ func ReadUserPassRequest(reader io.Reader) (request Socks5UserPassRequest, err e
|
||||
nUsername := int(buffer.Byte(1))
|
||||
|
||||
buffer.Clear()
|
||||
_, err = buffer.FillFullFrom(reader, nUsername)
|
||||
err = buffer.AppendSupplier(buf.ReadFullFrom(reader, nUsername))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
request.username = string(buffer.Bytes())
|
||||
|
||||
_, err = buffer.FillFullFrom(reader, 1)
|
||||
err = buffer.AppendSupplier(buf.ReadFullFrom(reader, 1))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
nPassword := int(buffer.Byte(0))
|
||||
_, err = buffer.FillFullFrom(reader, nPassword)
|
||||
err = buffer.AppendSupplier(buf.ReadFullFrom(reader, nPassword))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -188,10 +189,10 @@ type Socks5Request struct {
|
||||
}
|
||||
|
||||
func ReadRequest(reader io.Reader) (request *Socks5Request, err error) {
|
||||
buffer := buf.NewLocalBuffer(512)
|
||||
buffer := buf.NewLocal(512)
|
||||
defer buffer.Release()
|
||||
|
||||
_, err = buffer.FillFullFrom(reader, 4)
|
||||
err = buffer.AppendSupplier(buf.ReadFullFrom(reader, 4))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -210,12 +211,12 @@ func ReadRequest(reader io.Reader) (request *Socks5Request, err error) {
|
||||
}
|
||||
case AddrTypeDomain:
|
||||
buffer.Clear()
|
||||
_, err = buffer.FillFullFrom(reader, 1)
|
||||
err = buffer.AppendSupplier(buf.ReadFullFrom(reader, 1))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
domainLength := int(buffer.Byte(0))
|
||||
_, err = buffer.FillFullFrom(reader, domainLength)
|
||||
err = buffer.AppendSupplier(buf.ReadFullFrom(reader, domainLength))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -231,7 +232,7 @@ func ReadRequest(reader io.Reader) (request *Socks5Request, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = buffer.FillFullFrom(reader, 2)
|
||||
err = buffer.AppendSupplier(buf.ReadFullFrom(reader, 2))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ func TestSocks4AuthenticationResponseToBytes(t *testing.T) {
|
||||
|
||||
response := NewSocks4AuthenticationResponse(byte(0x10), 443, []byte{1, 2, 3, 4})
|
||||
|
||||
buffer := buf.NewLocalBuffer(2048)
|
||||
buffer := buf.NewLocal(2048)
|
||||
defer buffer.Release()
|
||||
|
||||
response.Write(buffer)
|
||||
|
||||
@@ -6,10 +6,10 @@ import (
|
||||
"testing"
|
||||
|
||||
"v2ray.com/core/common/buf"
|
||||
"v2ray.com/core/common/crypto"
|
||||
v2net "v2ray.com/core/common/net"
|
||||
"v2ray.com/core/proxy"
|
||||
"v2ray.com/core/testing/assert"
|
||||
"v2ray.com/core/common/crypto"
|
||||
)
|
||||
|
||||
func TestHasAuthenticationMethod(t *testing.T) {
|
||||
@@ -30,7 +30,7 @@ func TestHasAuthenticationMethod(t *testing.T) {
|
||||
func TestAuthenticationRequestRead(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
buffer := buf.NewBuffer()
|
||||
buffer := buf.New()
|
||||
buffer.AppendBytes(
|
||||
0x05, // version
|
||||
0x01, // nMethods
|
||||
@@ -85,7 +85,7 @@ func TestResponseWrite(t *testing.T) {
|
||||
[16]byte{},
|
||||
v2net.Port(53),
|
||||
}
|
||||
buffer := buf.NewLocalBuffer(2048)
|
||||
buffer := buf.NewLocal(2048)
|
||||
defer buffer.Release()
|
||||
|
||||
response.Write(buffer)
|
||||
@@ -106,7 +106,7 @@ func TestSetIPv6(t *testing.T) {
|
||||
response := NewSocks5Response()
|
||||
response.SetIPv6([]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15})
|
||||
|
||||
buffer := buf.NewLocalBuffer(2048)
|
||||
buffer := buf.NewLocal(2048)
|
||||
defer buffer.Release()
|
||||
response.Write(buffer)
|
||||
assert.Bytes(buffer.Bytes()).Equals([]byte{
|
||||
@@ -119,7 +119,7 @@ func TestSetDomain(t *testing.T) {
|
||||
response := NewSocks5Response()
|
||||
response.SetDomain("v2ray.com")
|
||||
|
||||
buffer := buf.NewLocalBuffer(2048)
|
||||
buffer := buf.NewLocal(2048)
|
||||
defer buffer.Release()
|
||||
response.Write(buffer)
|
||||
assert.Bytes(buffer.Bytes()).Equals([]byte{
|
||||
@@ -129,7 +129,7 @@ func TestSetDomain(t *testing.T) {
|
||||
func TestEmptyAuthRequest(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
_, _, err := ReadAuthentication(buf.NewBuffer())
|
||||
_, _, err := ReadAuthentication(buf.New())
|
||||
assert.Error(err).Equals(io.EOF)
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ func TestSingleByteAuthRequest(t *testing.T) {
|
||||
func TestZeroAuthenticationMethod(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
buffer := buf.NewBuffer()
|
||||
buffer := buf.New()
|
||||
buffer.AppendBytes(5, 0)
|
||||
_, _, err := ReadAuthentication(buffer)
|
||||
assert.Error(err).Equals(crypto.ErrAuthenticationFailed)
|
||||
@@ -151,7 +151,7 @@ func TestZeroAuthenticationMethod(t *testing.T) {
|
||||
func TestWrongProtocolVersion(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
buffer := buf.NewBuffer()
|
||||
buffer := buf.New()
|
||||
buffer.AppendBytes(6, 1, 0)
|
||||
_, _, err := ReadAuthentication(buffer)
|
||||
assert.Error(err).Equals(proxy.ErrInvalidProtocolVersion)
|
||||
@@ -160,14 +160,14 @@ func TestWrongProtocolVersion(t *testing.T) {
|
||||
func TestEmptyRequest(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
_, err := ReadRequest(buf.NewBuffer())
|
||||
_, err := ReadRequest(buf.New())
|
||||
assert.Error(err).Equals(io.EOF)
|
||||
}
|
||||
|
||||
func TestIPv6Request(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
b := buf.NewBuffer()
|
||||
b := buf.New()
|
||||
b.AppendBytes(5, 1, 0, 4, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 0, 8)
|
||||
request, err := ReadRequest(b)
|
||||
assert.Error(err).IsNil()
|
||||
|
||||
@@ -36,7 +36,7 @@ func (request *Socks5UDPRequest) Write(buffer *buf.Buffer) {
|
||||
buffer.AppendBytes(AddrTypeDomain, byte(len(request.Address.Domain())))
|
||||
buffer.Append([]byte(request.Address.Domain()))
|
||||
}
|
||||
buffer.AppendFunc(serial.WriteUint16(request.Port.Value()))
|
||||
buffer.AppendSupplier(serial.WriteUint16(request.Port.Value()))
|
||||
buffer.Append(request.Data.Bytes())
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ func ReadUDPRequest(packet []byte) (*Socks5UDPRequest, error) {
|
||||
}
|
||||
|
||||
if len(packet) > dataBegin {
|
||||
b := buf.NewSmallBuffer()
|
||||
b := buf.NewSmall()
|
||||
b.Append(packet[dataBegin:])
|
||||
request.Data = b
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user