Skip to content

Commit 8da0a53

Browse files
author
ghost
committed
properly propagate Reader errors
1 parent e52d3fa commit 8da0a53

File tree

3 files changed

+8
-14
lines changed

3 files changed

+8
-14
lines changed

common/buf/buffer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ func (b *Buffer) IsEmpty() bool {
131131

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

137137
// Write implements Write method in io.Writer.

common/buf/reader.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ func readOneUDP(r io.Reader) (*Buffer, error) {
2727
// ReadBuffer reads a Buffer from the given reader.
2828
func ReadBuffer(r io.Reader) (*Buffer, error) {
2929
b := New()
30-
_, err := b.ReadFrom(r)
31-
if err != nil {
32-
b.Release()
33-
return nil, err
30+
n, err := b.ReadFrom(r)
31+
if n > 0 {
32+
return b, err
3433
}
35-
return b, nil
34+
b.Release()
35+
return nil, err
3636
}
3737

3838
// BufferedReader is a Reader that keeps its internal buffer.
@@ -156,10 +156,7 @@ type SingleReader struct {
156156
// ReadMultiBuffer implements Reader.
157157
func (r *SingleReader) ReadMultiBuffer() (MultiBuffer, error) {
158158
b, err := ReadBuffer(r.Reader)
159-
if err != nil {
160-
return nil, err
161-
}
162-
return MultiBuffer{b}, nil
159+
return MultiBuffer{b}, err
163160
}
164161

165162
// PacketReader is a Reader that read one Buffer every time.

common/buf/readv_reader.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,10 @@ func (r *ReadVReader) readMulti() (MultiBuffer, error) {
120120
func (r *ReadVReader) ReadMultiBuffer() (MultiBuffer, error) {
121121
if r.alloc.Current() == 1 {
122122
b, err := ReadBuffer(r.Reader)
123-
if err != nil {
124-
return nil, err
125-
}
126123
if b.IsFull() {
127124
r.alloc.Adjust(1)
128125
}
129-
return MultiBuffer{b}, nil
126+
return MultiBuffer{b}, err
130127
}
131128

132129
mb, err := r.readMulti()

0 commit comments

Comments
 (0)