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:
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)
}