fix null result unmarshal

This commit is contained in:
马庆升 2018-09-28 16:03:36 +08:00
parent d8d8669271
commit e7dd1a2730

View file

@ -85,7 +85,7 @@ type jsonrpcMessage struct {
Method string `json:"method,omitempty"` Method string `json:"method,omitempty"`
Params json.RawMessage `json:"params,omitempty"` Params json.RawMessage `json:"params,omitempty"`
Error *jsonError `json:"error,omitempty"` Error *jsonError `json:"error,omitempty"`
Result json.RawMessage `json:"result,omitempty"` Result *json.RawMessage `json:"result,omitempty"`
} }
func (msg *jsonrpcMessage) isNotification() bool { func (msg *jsonrpcMessage) isNotification() bool {
@ -310,10 +310,10 @@ func (c *Client) CallContext(ctx context.Context, result interface{}, method str
return err return err
case resp.Error != nil: case resp.Error != nil:
return resp.Error return resp.Error
case len(resp.Result) == 0: case resp.Result == nil:
return ErrNoResult return ErrNoResult
default: default:
return json.Unmarshal(resp.Result, &result) return json.Unmarshal(*resp.Result, &result)
} }
} }
@ -381,11 +381,11 @@ func (c *Client) BatchCallContext(ctx context.Context, b []BatchElem) error {
elem.Error = resp.Error elem.Error = resp.Error
continue continue
} }
if len(resp.Result) == 0 { if resp.Result == nil {
elem.Error = ErrNoResult elem.Error = ErrNoResult
continue continue
} }
elem.Error = json.Unmarshal(resp.Result, elem.Result) elem.Error = json.Unmarshal(*resp.Result, elem.Result)
} }
return err return err
} }
@ -665,7 +665,7 @@ func (c *Client) handleResponse(msg *jsonrpcMessage) {
op.err = msg.Error op.err = msg.Error
return return
} }
if op.err = json.Unmarshal(msg.Result, &op.sub.subid); op.err == nil { if op.err = json.Unmarshal(*msg.Result, &op.sub.subid); op.err == nil {
go op.sub.start() go op.sub.start()
c.subs[op.sub.subid] = op.sub c.subs[op.sub.subid] = op.sub
} }