mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-12 12:52:35 -03:00
Merge bitcoin/bitcoin#27127: rpc: fix successful broadcast count in submitpackage
error msg
7554b1fd66
rpc: fix successful broadcast count in `submitpackage` error msg (Sebastian Falbesoner) Pull request description: If a `submitpackage` RPC call errors due to any of the individual tx broadcasts failing, the returned error message is supposed to contain the number of successful broadcasts so far:4395b7f084/src/rpc/mempool.cpp (L848-L849)
Right now this is wrongly always shown as zero. Fix this by adding the missing increment of the counter. While touching that area, the variable is also renamed to better reflect its purpose (s/num_submitted/num_broadcast/; the submission has already happened at that point) and named arguments for the `BroadcastTransaction` call are added. (Note that the error should be really rare, as all txs have already been submitted succesfully to the mempool. IIUC this code-path could only hit if somehow a tx is being removed from the mempool between `ProcessNewPackage` and the `BroadcastTransaction` calls, e.g. if a new block is received which confirms any of the package's txs.) ACKs for top commit: glozow: utACK7554b1fd66
, thanks! Tree-SHA512: e362e93b443109888e28d6facf6f52e67928e8baaa936e355bfdd324074302c4832e2fa0bd8745309a45eb729866d0513b928ac618ccc9432b7befc3aa2aac66
This commit is contained in:
commit
0f670e0eae
1 changed files with 4 additions and 3 deletions
|
@ -839,15 +839,16 @@ static RPCHelpMan submitpackage()
|
|||
NONFATAL_UNREACHABLE();
|
||||
}
|
||||
}
|
||||
size_t num_broadcast{0};
|
||||
for (const auto& tx : txns) {
|
||||
size_t num_submitted{0};
|
||||
std::string err_string;
|
||||
const auto err = BroadcastTransaction(node, tx, err_string, 0, true, true);
|
||||
const auto err = BroadcastTransaction(node, tx, err_string, /*max_tx_fee=*/0, /*relay=*/true, /*wait_callback=*/true);
|
||||
if (err != TransactionError::OK) {
|
||||
throw JSONRPCTransactionError(err,
|
||||
strprintf("transaction broadcast failed: %s (all transactions were submitted, %d transactions were broadcast successfully)",
|
||||
err_string, num_submitted));
|
||||
err_string, num_broadcast));
|
||||
}
|
||||
num_broadcast++;
|
||||
}
|
||||
UniValue rpc_result{UniValue::VOBJ};
|
||||
UniValue tx_result_map{UniValue::VOBJ};
|
||||
|
|
Loading…
Reference in a new issue