]> Cypherpunks repositories - gostls13.git/commitdiff
fix bug causing empty strings to be become non-nil errors on client side of rpc conne...
authorRob Pike <r@golang.org>
Tue, 17 Nov 2009 07:32:16 +0000 (23:32 -0800)
committerRob Pike <r@golang.org>
Tue, 17 Nov 2009 07:32:16 +0000 (23:32 -0800)
R=rsc
CC=golang-dev
https://golang.org/cl/155078

src/pkg/rpc/client.go
src/pkg/rpc/server.go

index 93884d9a71f596996d3158e7bfa888468d702659..8ee4c7419b26191ae140d27f8c69b2b1f03cd872 100644 (file)
@@ -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
index 045e2bb4ee0cfc65774d93b8679227b6922d68ae..cf32eed8df1b7b92024393962a81c722f054099c 100644 (file)
@@ -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);