mirror of https://github.com/v2ray/v2ray-core
parent
a8a68c2e70
commit
000e0804e8
|
@ -21,14 +21,14 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
pool [numPools]*sync.Pool
|
pool [numPools]sync.Pool
|
||||||
poolSize [numPools]uint32
|
poolSize [numPools]uint32
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
size := uint32(Size)
|
size := uint32(Size)
|
||||||
for i := 0; i < numPools; i++ {
|
for i := 0; i < numPools; i++ {
|
||||||
pool[i] = &sync.Pool{
|
pool[i] = sync.Pool{
|
||||||
New: createAllocFunc(size),
|
New: createAllocFunc(size),
|
||||||
}
|
}
|
||||||
poolSize[i] = size
|
poolSize[i] = size
|
||||||
|
@ -52,6 +52,7 @@ func freeBytes(b []byte) {
|
||||||
ps := poolSize[i]
|
ps := poolSize[i]
|
||||||
if size >= ps {
|
if size >= ps {
|
||||||
pool[i].Put(b)
|
pool[i].Put(b)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,11 +24,13 @@ func TestAuthenticationReaderWriter(t *testing.T) {
|
||||||
aead, err := cipher.NewGCM(block)
|
aead, err := cipher.NewGCM(block)
|
||||||
assert(err, IsNil)
|
assert(err, IsNil)
|
||||||
|
|
||||||
rawPayload := make([]byte, 8192*10)
|
const payloadSize = 1024 * 80
|
||||||
|
rawPayload := make([]byte, payloadSize)
|
||||||
rand.Read(rawPayload)
|
rand.Read(rawPayload)
|
||||||
|
|
||||||
payload := buf.NewSize(8192 * 10)
|
payload := buf.NewSize(payloadSize)
|
||||||
payload.Append(rawPayload)
|
payload.Append(rawPayload)
|
||||||
|
assert(payload.Len(), Equals, payloadSize)
|
||||||
|
|
||||||
cache := buf.NewSize(160 * 1024)
|
cache := buf.NewSize(160 * 1024)
|
||||||
iv := make([]byte, 12)
|
iv := make([]byte, 12)
|
||||||
|
@ -45,7 +47,6 @@ func TestAuthenticationReaderWriter(t *testing.T) {
|
||||||
assert(writer.WriteMultiBuffer(buf.NewMultiBufferValue(payload)), IsNil)
|
assert(writer.WriteMultiBuffer(buf.NewMultiBufferValue(payload)), IsNil)
|
||||||
assert(cache.Len(), Equals, 82658)
|
assert(cache.Len(), Equals, 82658)
|
||||||
assert(writer.WriteMultiBuffer(buf.MultiBuffer{}), IsNil)
|
assert(writer.WriteMultiBuffer(buf.MultiBuffer{}), IsNil)
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
reader := NewAuthenticationReader(&AEADAuthenticator{
|
reader := NewAuthenticationReader(&AEADAuthenticator{
|
||||||
AEAD: aead,
|
AEAD: aead,
|
||||||
|
@ -57,14 +58,16 @@ func TestAuthenticationReaderWriter(t *testing.T) {
|
||||||
|
|
||||||
var mb buf.MultiBuffer
|
var mb buf.MultiBuffer
|
||||||
|
|
||||||
for mb.Len() < len(rawPayload) {
|
for mb.Len() < payloadSize {
|
||||||
mb2, err := reader.ReadMultiBuffer()
|
mb2, err := reader.ReadMultiBuffer()
|
||||||
assert(err, IsNil)
|
assert(err, IsNil)
|
||||||
|
|
||||||
mb.AppendMulti(mb2)
|
mb.AppendMulti(mb2)
|
||||||
}
|
}
|
||||||
|
|
||||||
mbContent := make([]byte, 8192*10)
|
assert(mb.Len(), Equals, payloadSize)
|
||||||
|
|
||||||
|
mbContent := make([]byte, payloadSize)
|
||||||
mb.Read(mbContent)
|
mb.Read(mbContent)
|
||||||
assert(mbContent, Equals, rawPayload)
|
assert(mbContent, Equals, rawPayload)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue