mirror of
https://github.com/v2ray/v2ray-core.git
synced 2026-11-01 16:18:24 +00:00
rewrite alloc.buffer
This commit is contained in:
@@ -32,7 +32,7 @@ func MarshalCommand(command interface{}, writer io.Writer) error {
|
||||
return ErrUnknownCommand
|
||||
}
|
||||
|
||||
buffer := alloc.NewLocalBuffer(512).Clear()
|
||||
buffer := alloc.NewLocalBuffer(512)
|
||||
defer buffer.Release()
|
||||
|
||||
err := factory.Marshal(command, buffer)
|
||||
|
||||
@@ -21,7 +21,7 @@ func TestSwitchAccount(t *testing.T) {
|
||||
ValidMin: 16,
|
||||
}
|
||||
|
||||
buffer := alloc.NewBuffer().Clear()
|
||||
buffer := alloc.NewBuffer()
|
||||
err := MarshalCommand(sa, buffer)
|
||||
assert.Error(err).IsNil()
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ func TestRequestSerialization(t *testing.T) {
|
||||
Port: v2net.Port(443),
|
||||
}
|
||||
|
||||
buffer := alloc.NewBuffer().Clear()
|
||||
buffer := alloc.NewBuffer()
|
||||
client := NewClientSession(protocol.DefaultIDHash)
|
||||
client.EncodeRequestHeader(expectedRequest, buffer)
|
||||
|
||||
|
||||
@@ -236,7 +236,7 @@ func (v *VMessInboundHandler) HandleConnection(connection internet.Connection) {
|
||||
}
|
||||
output.Release()
|
||||
if request.Option.Has(protocol.RequestOptionChunkStream) {
|
||||
if err := v2writer.Write(alloc.NewLocalBuffer(32).Clear()); err != nil {
|
||||
if err := v2writer.Write(alloc.NewLocalBuffer(32)); err != nil {
|
||||
connection.SetReusable(false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"v2ray.com/core/common/alloc"
|
||||
"v2ray.com/core/common/errors"
|
||||
v2io "v2ray.com/core/common/io"
|
||||
"v2ray.com/core/common/serial"
|
||||
. "v2ray.com/core/proxy/vmess/io"
|
||||
"v2ray.com/core/testing/assert"
|
||||
)
|
||||
@@ -16,7 +17,7 @@ import (
|
||||
func TestAuthenticate(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
buffer := alloc.NewBuffer().Clear()
|
||||
buffer := alloc.NewBuffer()
|
||||
buffer.AppendBytes(1, 2, 3, 4)
|
||||
Authenticate(buffer)
|
||||
assert.Bytes(buffer.Bytes()).Equals([]byte{0, 8, 87, 52, 168, 125, 1, 2, 3, 4})
|
||||
@@ -32,8 +33,10 @@ func TestSingleIO(t *testing.T) {
|
||||
content := bytes.NewBuffer(make([]byte, 0, 1024*1024))
|
||||
|
||||
writer := NewAuthChunkWriter(v2io.NewAdaptiveWriter(content))
|
||||
writer.Write(alloc.NewBuffer().Clear().AppendString("abcd"))
|
||||
writer.Write(alloc.NewBuffer().Clear())
|
||||
b := alloc.NewBuffer()
|
||||
b.AppendFunc(serial.WriteString("abcd"))
|
||||
writer.Write(b)
|
||||
writer.Write(alloc.NewBuffer())
|
||||
writer.Release()
|
||||
|
||||
reader := NewAuthChunkReader(content)
|
||||
@@ -56,13 +59,17 @@ func TestLargeIO(t *testing.T) {
|
||||
if chunkSize+writeSize > len(content) {
|
||||
chunkSize = len(content) - writeSize
|
||||
}
|
||||
writer.Write(alloc.NewBuffer().Clear().Append(content[writeSize : writeSize+chunkSize]))
|
||||
b := alloc.NewBuffer()
|
||||
b.Append(content[writeSize : writeSize+chunkSize])
|
||||
writer.Write(b)
|
||||
b.Release()
|
||||
|
||||
writeSize += chunkSize
|
||||
if writeSize == len(content) {
|
||||
break
|
||||
}
|
||||
}
|
||||
writer.Write(alloc.NewBuffer().Clear())
|
||||
writer.Write(alloc.NewBuffer())
|
||||
writer.Release()
|
||||
|
||||
actualContent := make([]byte, 0, len(content))
|
||||
|
||||
@@ -50,7 +50,7 @@ func (v *AuthChunkReader) Read() (*alloc.Buffer, error) {
|
||||
buffer = v.last
|
||||
v.last = nil
|
||||
} else {
|
||||
buffer = alloc.NewBuffer().Clear()
|
||||
buffer = alloc.NewBuffer()
|
||||
}
|
||||
|
||||
if v.chunkLength == -1 {
|
||||
@@ -96,7 +96,7 @@ func (v *AuthChunkReader) Read() (*alloc.Buffer, error) {
|
||||
}
|
||||
leftLength := buffer.Len() - v.chunkLength
|
||||
if leftLength > 0 {
|
||||
v.last = alloc.NewBuffer().Clear()
|
||||
v.last = alloc.NewBuffer()
|
||||
v.last.Append(buffer.BytesFrom(v.chunkLength))
|
||||
buffer.Slice(0, v.chunkLength)
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
|
||||
"v2ray.com/core/common/alloc"
|
||||
v2io "v2ray.com/core/common/io"
|
||||
"v2ray.com/core/common/serial"
|
||||
)
|
||||
|
||||
type AuthChunkWriter struct {
|
||||
@@ -30,7 +31,7 @@ func (v *AuthChunkWriter) Release() {
|
||||
func Authenticate(buffer *alloc.Buffer) {
|
||||
fnvHash := fnv.New32a()
|
||||
fnvHash.Write(buffer.Bytes())
|
||||
buffer.PrependHash(fnvHash)
|
||||
buffer.PrependFunc(4, serial.WriteHash(fnvHash))
|
||||
|
||||
buffer.PrependUint16(uint16(buffer.Len()))
|
||||
buffer.PrependFunc(2, serial.WriteUint16(uint16(buffer.Len())))
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ func (v *VMessOutboundHandler) handleRequest(session *encoding.ClientSession, co
|
||||
}
|
||||
|
||||
if request.Option.Has(protocol.RequestOptionChunkStream) {
|
||||
err := streamWriter.Write(alloc.NewLocalBuffer(32).Clear())
|
||||
err := streamWriter.Write(alloc.NewLocalBuffer(32))
|
||||
if err != nil {
|
||||
conn.SetReusable(false)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user