refactor buffer

This commit is contained in:
Darien Raymond committed 2016-12-09 12:08:25 +01:00
1 parent 7a80409e30
commit 055023fdd5
53 files changed
+220 -284

No files matched your search

+12 -11
View File
@@ -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
}
+1 -1
View File
@@ -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)
+10 -10
View File
@@ -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()
+2 -2
View File
@@ -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
}