From 5f59d3ecb7f1b63579e7f07fc520459cdf119c81 Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Thu, 30 Mar 2017 09:26:21 +0200 Subject: [PATCH] Improve CFeeBumper interface, add comments, make use of std::move --- src/wallet/feebumper.cpp | 7 ++++++- src/wallet/feebumper.h | 12 +++++++++++- src/wallet/rpcwallet.cpp | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/wallet/feebumper.cpp b/src/wallet/feebumper.cpp index 73de2395291..fe3871a91d9 100644 --- a/src/wallet/feebumper.cpp +++ b/src/wallet/feebumper.cpp @@ -42,7 +42,7 @@ int64_t CalculateMaximumSignedTxSize(const CTransaction &tx, const CWallet *pWal CFeeBumper::CFeeBumper(const CWallet *pWallet, const uint256 txidIn, int newConfirmTarget, bool specifiedConfirmTarget, CAmount totalFee, bool newTxReplaceable) : - txid(txidIn), + txid(std::move(txidIn)), nOldFee(0), nNewFee(0) { @@ -229,6 +229,11 @@ CFeeBumper::CFeeBumper(const CWallet *pWallet, const uint256 txidIn, int newConf currentResult = BumpFeeResult::OK; } +bool CFeeBumper::signTransaction(CWallet *pWallet) +{ + return pWallet->SignTransaction(mtx); +} + bool CFeeBumper::commit(CWallet *pWallet) { AssertLockHeld(pWallet->cs_wallet); diff --git a/src/wallet/feebumper.h b/src/wallet/feebumper.h index 42b0ccad366..1a30499893f 100644 --- a/src/wallet/feebumper.h +++ b/src/wallet/feebumper.h @@ -28,9 +28,19 @@ public: const std::vector& getErrors() const { return vErrors; } CAmount getOldFee() const { return nOldFee; } CAmount getNewFee() const { return nNewFee; } - CMutableTransaction* getBumpedTxRef() { return &mtx; } uint256 getBumpedTxId() const { return bumpedTxid; } + /* signs the new transaction, + * returns false if the tx couldn't be found or if it was + * improssible to create the signature(s) + */ + bool signTransaction(CWallet *pWallet); + + /* commits the fee bump, + * returns true, in case of CWallet::CommitTransaction was successful + * but, eventually sets vErrors if the tx could not be added to the mempool (will try later) + * or if the old transaction could not be marked as replaced + */ bool commit(CWallet *pWalletNonConst); private: diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index f746c54f24e..2cc3072c16a 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -2895,7 +2895,7 @@ UniValue bumpfee(const JSONRPCRequest& request) } // sign bumped transaction - if (!pwallet->SignTransaction(*feeBump.getBumpedTxRef())) { + if (!feeBump.signTransaction(pwallet)) { throw JSONRPCError(RPC_WALLET_ERROR, "Can't sign transaction."); } // commit the bumped transaction