Skip to content

Commit c724099

Browse files
committed
net/textproto:refactor skipSpace function
1 parent 91d5ce3 commit c724099

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/net/textproto/reader.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,15 @@ func (r *Reader) readContinuedLineSlice(validateFirstLine func([]byte) error) ([
157157
r.buf = append(r.buf[:0], trim(line)...)
158158

159159
// Read continuation lines.
160-
for r.skipSpace() > 0 {
160+
for {
161+
n, err := r.skipSpace()
162+
if n == 0 || err != nil {
163+
// If function reads something, it ignores io.EOF.
164+
if err == io.EOF && len(r.buf) > 0 {
165+
err = nil
166+
}
167+
return r.buf, err
168+
}
161169
line, err := r.readLineSlice()
162170
if err != nil {
163171
break
@@ -169,21 +177,21 @@ func (r *Reader) readContinuedLineSlice(validateFirstLine func([]byte) error) ([
169177
}
170178

171179
// skipSpace skips R over all spaces and returns the number of bytes skipped.
172-
func (r *Reader) skipSpace() int {
180+
func (r *Reader) skipSpace() (int, error) {
173181
n := 0
174182
for {
175183
c, err := r.R.ReadByte()
176184
if err != nil {
177185
// Bufio will keep err until next read.
178-
break
186+
return n, err
179187
}
180188
if c != ' ' && c != '\t' {
181189
r.R.UnreadByte()
182190
break
183191
}
184192
n++
185193
}
186-
return n
194+
return n, nil
187195
}
188196

189197
func (r *Reader) readCodeLine(expectCode int) (code int, continued bool, message string, err error) {

0 commit comments

Comments
 (0)