From b22803e8b737f06991c2bdf76200a0ff5b13bae6 Mon Sep 17 00:00:00 2001 From: Alex Tran Qui <alex@katalysis.io> Date: Tue, 24 Jan 2017 23:00:38 +0100 Subject: [PATCH] Fix for deserialization of BroadcastTx which was missing the type byte. Author: Alex Tran Qui <alex@katalysis.io> Date: Tue Jan 24 23:00:38 2017 +0100 --- rpc/codec.go | 1 + rpc/v0/codec.go | 8 ++++++++ rpc/v0/methods.go | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/rpc/codec.go b/rpc/codec.go index bbf0ba60..750a5a88 100644 --- a/rpc/codec.go +++ b/rpc/codec.go @@ -23,5 +23,6 @@ type Codec interface { EncodeBytes(interface{}) ([]byte, error) Encode(interface{}, io.Writer) error DecodeBytes(interface{}, []byte) error + DecodeBytesPtr(interface{}, []byte) error Decode(interface{}, io.Reader) error } diff --git a/rpc/v0/codec.go b/rpc/v0/codec.go index 5763c7bc..87eb73b3 100644 --- a/rpc/v0/codec.go +++ b/rpc/v0/codec.go @@ -62,3 +62,11 @@ func (this *TCodec) DecodeBytes(v interface{}, bts []byte) error { wire.ReadJSON(v, bts, &err) return err } + +// Decode from a byte array pointer. +func (this *TCodec) DecodeBytesPtr(v interface{}, bts []byte) error { + var err error + wire.ReadJSONPtr(v, bts, &err) + return err +} + diff --git a/rpc/v0/methods.go b/rpc/v0/methods.go index a29086df..6a26848c 100644 --- a/rpc/v0/methods.go +++ b/rpc/v0/methods.go @@ -361,7 +361,7 @@ func (erisDbMethods *ErisDbMethods) CallCode(request *rpc.RPCRequest, requester func (erisDbMethods *ErisDbMethods) BroadcastTx(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { // Accept all transaction types as parameter for broadcast. param := new(txs.Tx) - err := erisDbMethods.codec.DecodeBytes(param, request.Params) + err := erisDbMethods.codec.DecodeBytesPtr(param, request.Params) if err != nil { return nil, rpc.INVALID_PARAMS, err } -- GitLab