From ea82dfdee12c53efb64c5855139c032e8f05c8e6 Mon Sep 17 00:00:00 2001 From: Grace Noah Date: Tue, 20 Feb 2018 08:36:14 +0000 Subject: [PATCH] fix NewImportAddressCmd rescan wrong parameters fix #1126 --- btcjson/btcwalletextcmds.go | 4 +++- btcjson/btcwalletextcmds_test.go | 13 +++++++------ rpcclient/wallet.go | 10 +++++----- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/btcjson/btcwalletextcmds.go b/btcjson/btcwalletextcmds.go index 9cbc273a..3982a135 100644 --- a/btcjson/btcwalletextcmds.go +++ b/btcjson/btcwalletextcmds.go @@ -36,14 +36,16 @@ func NewDumpWalletCmd(filename string) *DumpWalletCmd { // ImportAddressCmd defines the importaddress JSON-RPC command. type ImportAddressCmd struct { Address string + Account string Rescan *bool `jsonrpcdefault:"true"` } // NewImportAddressCmd returns a new instance which can be used to issue an // importaddress JSON-RPC command. -func NewImportAddressCmd(address string, rescan *bool) *ImportAddressCmd { +func NewImportAddressCmd(address string, account string, rescan *bool) *ImportAddressCmd { return &ImportAddressCmd{ Address: address, + Account: account, Rescan: rescan, } } diff --git a/btcjson/btcwalletextcmds_test.go b/btcjson/btcwalletextcmds_test.go index e478a088..58de1c81 100644 --- a/btcjson/btcwalletextcmds_test.go +++ b/btcjson/btcwalletextcmds_test.go @@ -58,12 +58,12 @@ func TestBtcWalletExtCmds(t *testing.T) { { name: "importaddress", newCmd: func() (interface{}, error) { - return btcjson.NewCmd("importaddress", "1Address") + return btcjson.NewCmd("importaddress", "1Address", "") }, staticCmd: func() interface{} { - return btcjson.NewImportAddressCmd("1Address", nil) + return btcjson.NewImportAddressCmd("1Address", "", nil) }, - marshalled: `{"jsonrpc":"1.0","method":"importaddress","params":["1Address"],"id":1}`, + marshalled: `{"jsonrpc":"1.0","method":"importaddress","params":["1Address",""],"id":1}`, unmarshalled: &btcjson.ImportAddressCmd{ Address: "1Address", Rescan: btcjson.Bool(true), @@ -72,14 +72,15 @@ func TestBtcWalletExtCmds(t *testing.T) { { name: "importaddress optional", newCmd: func() (interface{}, error) { - return btcjson.NewCmd("importaddress", "1Address", false) + return btcjson.NewCmd("importaddress", "1Address", "acct", false) }, staticCmd: func() interface{} { - return btcjson.NewImportAddressCmd("1Address", btcjson.Bool(false)) + return btcjson.NewImportAddressCmd("1Address", "acct", btcjson.Bool(false)) }, - marshalled: `{"jsonrpc":"1.0","method":"importaddress","params":["1Address",false],"id":1}`, + marshalled: `{"jsonrpc":"1.0","method":"importaddress","params":["1Address","acct",false],"id":1}`, unmarshalled: &btcjson.ImportAddressCmd{ Address: "1Address", + Account: "acct", Rescan: btcjson.Bool(false), }, }, diff --git a/rpcclient/wallet.go b/rpcclient/wallet.go index 10c12f1f..27546f5d 100644 --- a/rpcclient/wallet.go +++ b/rpcclient/wallet.go @@ -2078,7 +2078,7 @@ func (r FutureImportAddressResult) Receive() error { // // See ImportAddress for the blocking version and more details. func (c *Client) ImportAddressAsync(address string) FutureImportAddressResult { - cmd := btcjson.NewImportAddressCmd(address, nil) + cmd := btcjson.NewImportAddressCmd(address, "", nil) return c.sendCmd(cmd) } @@ -2092,15 +2092,15 @@ func (c *Client) ImportAddress(address string) error { // returned instance. // // See ImportAddress for the blocking version and more details. -func (c *Client) ImportAddressRescanAsync(address string, rescan bool) FutureImportAddressResult { - cmd := btcjson.NewImportAddressCmd(address, &rescan) +func (c *Client) ImportAddressRescanAsync(address string, account string, rescan bool) FutureImportAddressResult { + cmd := btcjson.NewImportAddressCmd(address, account, &rescan) return c.sendCmd(cmd) } // ImportAddressRescan imports the passed public address. When rescan is true, // the block history is scanned for transactions addressed to provided address. -func (c *Client) ImportAddressRescan(address string, rescan bool) error { - return c.ImportAddressRescanAsync(address, rescan).Receive() +func (c *Client) ImportAddressRescan(address string, account string, rescan bool) error { + return c.ImportAddressRescanAsync(address, account, rescan).Receive() } // FutureImportPrivKeyResult is a future promise to deliver the result of an