diff --git a/conn/client.go b/conn/client.go
index 2b668dc05c65cd02f80f01529581d81369589696..27bdd904426bde046b767db6e653d7b29c957430 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 e3e7c4dba08316abf6c9a933b21c8751fd5a9147..7085d35305d27dac7717f0c03a1aca6e40e4757a 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 {