From e52c71a25cd42a18e6ff83ba1f1b4886311860cc Mon Sep 17 00:00:00 2001 From: Manish R Jain <manishrjain@gmail.com> Date: Wed, 9 Mar 2016 14:26:30 +1100 Subject: [PATCH] Use io.ReadFull to allow for Read() returning before reading the full buffer --- conn/client.go | 6 +----- conn/server.go | 8 ++------ 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/conn/client.go b/conn/client.go index 2b668dc0..27bdd904 100644 --- a/conn/client.go +++ b/conn/client.go @@ -42,11 +42,7 @@ func (c *ClientCodec) ReadResponseHeader(r *rpc.Response) error { func (c *ClientCodec) ReadResponseBody(body interface{}) error { buf := make([]byte, c.payloadLen) - n, err := c.Rwc.Read(buf) - if n != int(c.payloadLen) { - return fmt.Errorf("ClientCodec expected: %d. Got: %d\n", c.payloadLen, n) - } - + _, err := io.ReadFull(c.Rwc, buf) reply := body.(*Reply) reply.Data = buf return err diff --git a/conn/server.go b/conn/server.go index e3e7c4db..7085d353 100644 --- a/conn/server.go +++ b/conn/server.go @@ -1,7 +1,6 @@ package conn import ( - "errors" "io" "log" "net/rpc" @@ -18,12 +17,9 @@ func (c *ServerCodec) ReadRequestHeader(r *rpc.Request) error { func (c *ServerCodec) ReadRequestBody(data interface{}) error { b := make([]byte, c.payloadLen) - n, err := c.Rwc.Read(b) + _, err := io.ReadFull(c.Rwc, b) if err != nil { - log.Fatal("server", err) - } - if n != int(c.payloadLen) { - return errors.New("ServerCodec unable to read request.") + return err } if data == nil { -- GitLab