Frame decoder was checking cap(), not len()

Resulted in bytes being missing from the streaming decoder. Update both
parts.
This commit is contained in:
Clayton Coleman
2016-04-28 11:27:46 -04:00
parent b930d58fcb
commit 84dee0d9cc
4 changed files with 90 additions and 5 deletions

View File

@@ -131,13 +131,13 @@ func NewJSONFramedReader(r io.ReadCloser) io.ReadCloser {
func (r *jsonFrameReader) Read(data []byte) (int, error) {
// Return whatever remaining data exists from an in progress frame
if n := len(r.remaining); n > 0 {
if n <= cap(data) {
if n <= len(data) {
data = append(data[0:0], r.remaining...)
r.remaining = nil
return n, nil
}
n = cap(data)
n = len(data)
data = append(data[0:0], r.remaining[:n]...)
r.remaining = r.remaining[n:]
return n, io.ErrShortBuffer