mirror of
https://github.com/v2fly/v2ray-core.git
synced 2026-06-23 03:10:00 -04:00
remove aggressive reader
This commit is contained in:
@@ -76,20 +76,18 @@ type AuthenticationReader struct {
|
||||
buffer *buf.Buffer
|
||||
reader io.Reader
|
||||
|
||||
chunk []byte
|
||||
aggressive bool
|
||||
chunk []byte
|
||||
}
|
||||
|
||||
const (
|
||||
readerBufferSize = 32 * 1024
|
||||
)
|
||||
|
||||
func NewAuthenticationReader(auth Authenticator, reader io.Reader, aggressive bool) *AuthenticationReader {
|
||||
func NewAuthenticationReader(auth Authenticator, reader io.Reader) *AuthenticationReader {
|
||||
return &AuthenticationReader{
|
||||
auth: auth,
|
||||
buffer: buf.NewLocal(readerBufferSize),
|
||||
reader: reader,
|
||||
aggressive: aggressive,
|
||||
auth: auth,
|
||||
buffer: buf.NewLocal(readerBufferSize),
|
||||
reader: reader,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,14 +166,7 @@ func (v *AuthenticationReader) Read(b []byte) (int, error) {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
totalBytes := v.CopyChunk(b)
|
||||
for v.aggressive && totalBytes < len(b) {
|
||||
if err := v.NextChunk(); err != nil {
|
||||
break
|
||||
}
|
||||
totalBytes += v.CopyChunk(b[totalBytes:])
|
||||
}
|
||||
return totalBytes, nil
|
||||
return v.CopyChunk(b), nil
|
||||
}
|
||||
|
||||
type AuthenticationWriter struct {
|
||||
|
||||
@@ -51,7 +51,7 @@ func TestAuthenticationReaderWriter(t *testing.T) {
|
||||
Content: iv,
|
||||
},
|
||||
AdditionalDataGenerator: &NoOpBytesGenerator{},
|
||||
}, cache, false)
|
||||
}, cache)
|
||||
|
||||
actualPayload := make([]byte, 16*1024)
|
||||
nBytes, err = reader.Read(actualPayload)
|
||||
@@ -102,7 +102,7 @@ func TestAuthenticationReaderWriterPartial(t *testing.T) {
|
||||
Content: iv,
|
||||
},
|
||||
AdditionalDataGenerator: &NoOpBytesGenerator{},
|
||||
}, cache, false)
|
||||
}, cache)
|
||||
|
||||
actualPayload := make([]byte, 7*1024)
|
||||
nBytes, err = reader.Read(actualPayload)
|
||||
@@ -118,56 +118,3 @@ func TestAuthenticationReaderWriterPartial(t *testing.T) {
|
||||
_, err = reader.Read(actualPayload)
|
||||
assert.Error(err).Equals(io.EOF)
|
||||
}
|
||||
|
||||
func TestAuthenticationReaderWriterAggressive(t *testing.T) {
|
||||
assert := assert.On(t)
|
||||
|
||||
key := make([]byte, 16)
|
||||
rand.Read(key)
|
||||
block, err := aes.NewCipher(key)
|
||||
assert.Error(err).IsNil()
|
||||
|
||||
aead, err := cipher.NewGCM(block)
|
||||
assert.Error(err).IsNil()
|
||||
|
||||
payload := make([]byte, 7*1024)
|
||||
rand.Read(payload)
|
||||
|
||||
cache := buf.NewLocal(16 * 1024)
|
||||
iv := make([]byte, 12)
|
||||
rand.Read(iv)
|
||||
|
||||
writer := NewAuthenticationWriter(&AEADAuthenticator{
|
||||
AEAD: aead,
|
||||
NonceGenerator: &StaticBytesGenerator{
|
||||
Content: iv,
|
||||
},
|
||||
AdditionalDataGenerator: &NoOpBytesGenerator{},
|
||||
}, cache)
|
||||
|
||||
nBytes, err := writer.Write(payload)
|
||||
assert.Error(err).IsNil()
|
||||
assert.Int(nBytes).Equals(len(payload))
|
||||
assert.Int(cache.Len()).GreaterThan(0)
|
||||
_, err = writer.Write(payload)
|
||||
assert.Error(err).IsNil()
|
||||
assert.Int(nBytes).Equals(len(payload))
|
||||
_, err = writer.Write([]byte{})
|
||||
assert.Error(err).IsNil()
|
||||
|
||||
reader := NewAuthenticationReader(&AEADAuthenticator{
|
||||
AEAD: aead,
|
||||
NonceGenerator: &StaticBytesGenerator{
|
||||
Content: iv,
|
||||
},
|
||||
AdditionalDataGenerator: &NoOpBytesGenerator{},
|
||||
}, cache, true)
|
||||
|
||||
actualPayload := make([]byte, 16*1024)
|
||||
nBytes, err = reader.Read(actualPayload)
|
||||
assert.Error(err).IsNil()
|
||||
assert.Int(nBytes).Equals(len(payload) * 2)
|
||||
|
||||
_, err = reader.Read(actualPayload)
|
||||
assert.Error(err).Equals(io.EOF)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user