mirror of https://github.com/v2ray/v2ray-core
check errors
parent
18f3fb5196
commit
47f1399995
|
@ -118,7 +118,7 @@ func (mb *MultiBuffer) ReadFrom(reader io.Reader) (int64, error) {
|
||||||
|
|
||||||
// Read implements io.Reader.
|
// Read implements io.Reader.
|
||||||
func (mb *MultiBuffer) Read(b []byte) (int, error) {
|
func (mb *MultiBuffer) Read(b []byte) (int, error) {
|
||||||
if mb.Len() == 0 {
|
if mb.IsEmpty() {
|
||||||
return 0, io.EOF
|
return 0, io.EOF
|
||||||
}
|
}
|
||||||
endIndex := len(*mb)
|
endIndex := len(*mb)
|
||||||
|
|
|
@ -97,8 +97,9 @@ func (r *BufferedReader) ReadByte() (byte, error) {
|
||||||
|
|
||||||
// Read implements io.Reader. It reads from internal buffer first (if available) and then reads from the underlying reader.
|
// Read implements io.Reader. It reads from internal buffer first (if available) and then reads from the underlying reader.
|
||||||
func (r *BufferedReader) Read(b []byte) (int, error) {
|
func (r *BufferedReader) Read(b []byte) (int, error) {
|
||||||
if r.Buffer != nil {
|
if !r.Buffer.IsEmpty() {
|
||||||
nBytes, _ := r.Buffer.Read(b)
|
nBytes, err := r.Buffer.Read(b)
|
||||||
|
common.Must(err)
|
||||||
if r.Buffer.IsEmpty() {
|
if r.Buffer.IsEmpty() {
|
||||||
r.Buffer.Release()
|
r.Buffer.Release()
|
||||||
r.Buffer = nil
|
r.Buffer = nil
|
||||||
|
@ -113,19 +114,21 @@ func (r *BufferedReader) Read(b []byte) (int, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
mb, err := r.Reader.ReadMultiBuffer()
|
mb, err := r.Reader.ReadMultiBuffer()
|
||||||
if mb != nil {
|
if err != nil {
|
||||||
nBytes, _ := mb.Read(b)
|
return 0, err
|
||||||
if !mb.IsEmpty() {
|
|
||||||
r.Buffer = mb
|
|
||||||
}
|
|
||||||
return nBytes, err
|
|
||||||
}
|
}
|
||||||
return 0, err
|
|
||||||
|
nBytes, err := mb.Read(b)
|
||||||
|
common.Must(err)
|
||||||
|
if !mb.IsEmpty() {
|
||||||
|
r.Buffer = mb
|
||||||
|
}
|
||||||
|
return nBytes, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadMultiBuffer implements Reader.
|
// ReadMultiBuffer implements Reader.
|
||||||
func (r *BufferedReader) ReadMultiBuffer() (MultiBuffer, error) {
|
func (r *BufferedReader) ReadMultiBuffer() (MultiBuffer, error) {
|
||||||
if r.Buffer != nil {
|
if !r.Buffer.IsEmpty() {
|
||||||
mb := r.Buffer
|
mb := r.Buffer
|
||||||
r.Buffer = nil
|
r.Buffer = nil
|
||||||
return mb, nil
|
return mb, nil
|
||||||
|
@ -136,7 +139,7 @@ func (r *BufferedReader) ReadMultiBuffer() (MultiBuffer, error) {
|
||||||
|
|
||||||
// ReadAtMost returns a MultiBuffer with at most size.
|
// ReadAtMost returns a MultiBuffer with at most size.
|
||||||
func (r *BufferedReader) ReadAtMost(size int32) (MultiBuffer, error) {
|
func (r *BufferedReader) ReadAtMost(size int32) (MultiBuffer, error) {
|
||||||
if r.Buffer == nil {
|
if r.Buffer.IsEmpty() {
|
||||||
mb, err := r.Reader.ReadMultiBuffer()
|
mb, err := r.Reader.ReadMultiBuffer()
|
||||||
if mb.IsEmpty() && err != nil {
|
if mb.IsEmpty() && err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -3,6 +3,7 @@ package kcp
|
||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"v2ray.com/core/common"
|
||||||
"v2ray.com/core/common/buf"
|
"v2ray.com/core/common/buf"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -204,7 +205,8 @@ func (w *ReceivingWorker) ReadMultiBuffer() buf.MultiBuffer {
|
||||||
|
|
||||||
func (w *ReceivingWorker) Read(b []byte) int {
|
func (w *ReceivingWorker) Read(b []byte) int {
|
||||||
mb := w.ReadMultiBuffer()
|
mb := w.ReadMultiBuffer()
|
||||||
nBytes, _ := mb.Read(b)
|
nBytes, err := mb.Read(b)
|
||||||
|
common.Must(err)
|
||||||
if !mb.IsEmpty() {
|
if !mb.IsEmpty() {
|
||||||
w.leftOver = mb
|
w.leftOver = mb
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue