diff options
author | Rob Pike <r@golang.org> | 2009-11-16 23:32:16 -0800 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2009-11-16 23:32:16 -0800 |
commit | 50c04132ac43123b968b6057f49d4c387f922ed3 (patch) | |
tree | b528f59d87e2a01dbe683c257ef1c853c39afae4 | |
parent | bcb46c8560ce11a6bc6d47fd3b2dae623c66b1da (diff) | |
download | go-50c04132ac43123b968b6057f49d4c387f922ed3.tar.gz go-50c04132ac43123b968b6057f49d4c387f922ed3.zip |
fix bug causing empty strings to be become non-nil errors on client side of rpc connection.
R=rsc
CC=golang-dev
https://golang.org/cl/155078
-rw-r--r-- | src/pkg/rpc/client.go | 7 | ||||
-rw-r--r-- | src/pkg/rpc/server.go | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/pkg/rpc/client.go b/src/pkg/rpc/client.go index 93884d9a71..8ee4c7419b 100644 --- a/src/pkg/rpc/client.go +++ b/src/pkg/rpc/client.go @@ -83,7 +83,12 @@ func (client *Client) input() { client.pending[seq] = c, false; client.mutex.Unlock(); err = client.dec.Decode(c.Reply); - c.Error = os.ErrorString(response.Error); + // Empty strings should turn into nil os.Errors + if response.Error != "" { + c.Error = os.ErrorString(response.Error) + } else { + c.Error = nil + } // We don't want to block here. It is the caller's responsibility to make // sure the channel has enough buffer space. See comment in Go(). _ = c.Done <- c; // do not block diff --git a/src/pkg/rpc/server.go b/src/pkg/rpc/server.go index 045e2bb4ee..cf32eed8df 100644 --- a/src/pkg/rpc/server.go +++ b/src/pkg/rpc/server.go @@ -276,7 +276,9 @@ func sendResponse(sending *sync.Mutex, req *Request, reply interface{}, enc *gob resp := new(Response); // Encode the response header resp.ServiceMethod = req.ServiceMethod; - resp.Error = errmsg; + if errmsg != "" { + resp.Error = errmsg + } resp.Seq = req.Seq; sending.Lock(); enc.Encode(resp); |