diff --git a/proxy/vmess/aead.go b/proxy/vmess/aead.go index c37841e..b97609a 100644 --- a/proxy/vmess/aead.go +++ b/proxy/vmess/aead.go @@ -89,7 +89,7 @@ func (r *aeadReader) read(p []byte) (int, error) { return 0, err } - if int(size) > len(p) { + if int(size) <= r.Overhead() || int(size) > len(p) { return 0, io.EOF } @@ -111,8 +111,6 @@ func (r *aeadReader) read(p []byte) (int, error) { func (r *aeadReader) Read(p []byte) (int, error) { if r.buf == nil { - // https://www.v2fly.org/en_US/developer/protocols/vmess.html#standard-format - // According to the spec, the maximum data length is 2^14 (chunkSize) if len(p) >= chunkSize { return r.read(p) }