1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-10 09:50:43 +00:00

reduce memory consumption on readOne

This commit is contained in:
Darien Raymond 2018-12-03 12:40:38 +01:00
parent c5a384195a
commit 844f6937a4
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169

View File

@ -8,7 +8,17 @@ import (
)
func readOne(r io.Reader) (*Buffer, error) {
// Use an one-byte buffer to wait for incoming payload.
var firstByte [1]byte
nBytes, err := r.Read(firstByte[:])
if err != nil {
return nil, err
}
b := New()
if nBytes > 0 {
copy(b.Extend(int32(nBytes)), firstByte[:])
}
for i := 0; i < 64; i++ {
_, err := b.ReadFrom(r)
if !b.IsEmpty() {
@ -20,6 +30,7 @@ func readOne(r io.Reader) (*Buffer, error) {
}
}
b.Release()
return nil, newError("Reader returns too many empty payloads.")
}