Skip to content

Commit

Permalink
properly propagate Reader errors
Browse files Browse the repository at this point in the history
  • Loading branch information
ghost committed Nov 22, 2019
1 parent e52d3fa commit 8da0a53
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 14 deletions.
2 changes: 1 addition & 1 deletion common/buf/buffer.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ func (b *Buffer) IsEmpty() bool {

// IsFull returns true if the buffer has no more room to grow.
func (b *Buffer) IsFull() bool {
return b.end == int32(len(b.v))
return b != nil && b.end == int32(len(b.v))
}

// Write implements Write method in io.Writer.
Expand Down
15 changes: 6 additions & 9 deletions common/buf/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ func readOneUDP(r io.Reader) (*Buffer, error) {
// ReadBuffer reads a Buffer from the given reader.
func ReadBuffer(r io.Reader) (*Buffer, error) {
b := New()
_, err := b.ReadFrom(r)
if err != nil {
b.Release()
return nil, err
n, err := b.ReadFrom(r)
if n > 0 {
return b, err
}
return b, nil
b.Release()
return nil, err
}

// BufferedReader is a Reader that keeps its internal buffer.
Expand Down Expand Up @@ -156,10 +156,7 @@ type SingleReader struct {
// ReadMultiBuffer implements Reader.
func (r *SingleReader) ReadMultiBuffer() (MultiBuffer, error) {
b, err := ReadBuffer(r.Reader)
if err != nil {
return nil, err
}
return MultiBuffer{b}, nil
return MultiBuffer{b}, err
}

// PacketReader is a Reader that read one Buffer every time.
Expand Down
5 changes: 1 addition & 4 deletions common/buf/readv_reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,13 +120,10 @@ func (r *ReadVReader) readMulti() (MultiBuffer, error) {
func (r *ReadVReader) ReadMultiBuffer() (MultiBuffer, error) {
if r.alloc.Current() == 1 {
b, err := ReadBuffer(r.Reader)
if err != nil {
return nil, err
}
if b.IsFull() {
r.alloc.Adjust(1)
}
return MultiBuffer{b}, nil
return MultiBuffer{b}, err
}

mb, err := r.readMulti()
Expand Down

0 comments on commit 8da0a53

Please sign in to comment.