lib9p

Go 9P library.
Log | Files | Refs | LICENSE

commit 733e993a2f1eeef89c733de6848447d3f978d637
parent a5853aaca3aaa3749f406e5c8562b6edf70cd1ff
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Fri, 15 Dec 2023 12:24:15 +0900

fix bug of partial read

Diffstat:
Mparse.go | 11+++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/parse.go b/parse.go @@ -22,11 +22,14 @@ func readMsg(r io.Reader) ([]byte, error) { } size := bufMsg(buf).Size() mbuf := make([]byte, size-4) - read, err = r.Read(mbuf) - buf = append(buf, mbuf...) - if err != nil { - return buf, fmt.Errorf("read body: %v", err) + for read = 0; read < int(size) - 4; { + n, err := r.Read(mbuf) + if err != nil { + return buf, fmt.Errorf("read body: %v", err) + } + read += n } + buf = append(buf, mbuf...) if uint32(read+4) != size { return buf, fmt.Errorf("read body: size mismatch: %d != %d", read+4, size) }