]> Cypherpunks repositories - gostls13.git/commitdiff
net/rpc/jsonrpc: set exactly one of result or error to non-null in response
authorBrad Fitzpatrick <bradfitz@golang.org>
Sat, 8 Mar 2014 00:59:11 +0000 (16:59 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Sat, 8 Mar 2014 00:59:11 +0000 (16:59 -0800)
Fixes #7442

LGTM=gri
R=golang-codereviews, gri
CC=golang-codereviews
https://golang.org/cl/72570044

src/pkg/net/rpc/jsonrpc/all_test.go
src/pkg/net/rpc/jsonrpc/server.go

index 07913572aa9a24af344c611f7383f4d8d9abdb94..a433a365e88849be9a6d1f41575ab26fddfc0635 100644 (file)
@@ -205,7 +205,6 @@ func TestMalformedOutput(t *testing.T) {
 }
 
 func TestServerErrorHasNullResult(t *testing.T) {
-       t.Skip("Known failing test; Issue 7442")
        var out bytes.Buffer
        sc := NewServerCodec(struct {
                io.Reader
index 16ec0fe9ad5a05402935ee164085e60a1a0540ce..e6d37cfa64f3d72e4c51d4bf4b28ccee15430c27 100644 (file)
@@ -100,7 +100,6 @@ func (c *serverCodec) ReadRequestBody(x interface{}) error {
 var null = json.RawMessage([]byte("null"))
 
 func (c *serverCodec) WriteResponse(r *rpc.Response, x interface{}) error {
-       var resp serverResponse
        c.mutex.Lock()
        b, ok := c.pending[r.Seq]
        if !ok {
@@ -114,10 +113,9 @@ func (c *serverCodec) WriteResponse(r *rpc.Response, x interface{}) error {
                // Invalid request so no id.  Use JSON null.
                b = &null
        }
-       resp.Id = b
-       resp.Result = x
+       resp := serverResponse{Id: b}
        if r.Error == "" {
-               resp.Error = nil
+               resp.Result = x
        } else {
                resp.Error = r.Error
        }