improved request line-end check

Signed-off-by: kim (grufwub) <grufwub@gmail.com>
development
kim (grufwub) 4 years ago
parent 41f0ab6b1c
commit eef30c742f

@ -2,6 +2,7 @@ package core
import (
"bufio"
"bytes"
"io"
"net"
"time"
@ -63,14 +64,10 @@ func (c *conn) ReadLine() ([]byte, *errors.Error) {
return nil, errors.WrapError(ConnReadErr, err)
}
// Iterate up to '\r\n' or just '\n'
end := -1
for i := 0; i < count; i++ {
if c.b[i] == '\n' ||
(c.b[i] == '\r' && i < count-1 && c.b[i+1] == '\n') {
end = i
break
}
// Get up to first '\r\n' (or just '\n')
end := bytes.IndexByte(c.b[:count], '\n')
if end > 0 && c.b[end-1] == '\r' {
end--
}
// If end never reached return error,

Loading…
Cancel
Save