From d3e4bcdcf5b24b30806775829dc7dad1ceae4681 Mon Sep 17 00:00:00 2001 From: Josh Rickmar Date: Mon, 20 Jan 2014 18:07:17 -0500 Subject: [PATCH] Fix sendrawtransaction for websockets. This fixes two issues: first, the sendrawtransaction handler had an extra character in the key in the websocket handler map, preventing the handler from never running. Second, a nil pointer dereference was removed from the handler. This change fixes the minedtx notifications for btcwallet, since the websocket-handler now runs instead of falling back to the legacy RPC handler. --- rpcwebsocket.go | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/rpcwebsocket.go b/rpcwebsocket.go index 1454bab4..81dd404a 100644 --- a/rpcwebsocket.go +++ b/rpcwebsocket.go @@ -35,13 +35,13 @@ type wsCommandHandler func(*rpcServer, btcjson.Cmd, handlerChans) (interface{}, // wsHandlers maps RPC command strings to appropriate websocket handler // functions. var wsHandlers = map[string]wsCommandHandler{ - "getcurrentnet": handleGetCurrentNet, - "getbestblock": handleGetBestBlock, - "notifyblocks": handleNotifyBlocks, - "notifynewtxs": handleNotifyNewTXs, - "notifyspent": handleNotifySpent, - "rescan": handleRescan, - "sendrawtransaction:": handleWalletSendRawTransaction, + "getcurrentnet": handleGetCurrentNet, + "getbestblock": handleGetBestBlock, + "notifyblocks": handleNotifyBlocks, + "notifynewtxs": handleNotifyNewTXs, + "notifyspent": handleNotifySpent, + "rescan": handleRescan, + "sendrawtransaction": handleWalletSendRawTransaction, } // wsContext holds the items the RPC server needs to handle websocket @@ -492,15 +492,14 @@ func handleWalletSendRawTransaction(s *rpcServer, icmd btcjson.Cmd, c handlerCha // TODO: the standard handlers really should be changed to // return btcjson.Errors which get used directly in the // response. Wouldn't need this crap here then. - var jsonErr *btcjson.Error - if jsonErr, ok := err.(*btcjson.Error); ok { - return result, jsonErr - } - jsonErr = &btcjson.Error{ - Code: btcjson.ErrMisc.Code, - Message: err.Error(), - } if err != nil { + if jsonErr, ok := err.(*btcjson.Error); ok { + return result, jsonErr + } + jsonErr := &btcjson.Error{ + Code: btcjson.ErrMisc.Code, + Message: err.Error(), + } return result, jsonErr }