Improve CFeeBumper interface, add comments, make use of std::move

This commit is contained in:
Jonas Schnelli 2017-03-30 09:26:21 +02:00
parent 0df22ed6fd
commit 5f59d3ecb7
No known key found for this signature in database
GPG key ID: 1EB776BB03C7922D
3 changed files with 18 additions and 3 deletions

View file

@ -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);

View file

@ -28,9 +28,19 @@ public:
const std::vector<std::string>& 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:

View file

@ -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