Skip to content

Commit 0f670e0

Browse files
committed
Merge bitcoin/bitcoin#27127: rpc: fix successful broadcast count in submitpackage error msg
7554b1f 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: https://github.com/bitcoin/bitcoin/blob/4395b7f0845d2dca60f3b4e007ef5770ce8e2aa9/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: utACK 7554b1f, thanks! Tree-SHA512: e362e93b443109888e28d6facf6f52e67928e8baaa936e355bfdd324074302c4832e2fa0bd8745309a45eb729866d0513b928ac618ccc9432b7befc3aa2aac66
2 parents e996219 + 7554b1f commit 0f670e0

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/rpc/mempool.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -839,15 +839,16 @@ static RPCHelpMan submitpackage()
839839
NONFATAL_UNREACHABLE();
840840
}
841841
}
842+
size_t num_broadcast{0};
842843
for (const auto& tx : txns) {
843-
size_t num_submitted{0};
844844
std::string err_string;
845-
const auto err = BroadcastTransaction(node, tx, err_string, 0, true, true);
845+
const auto err = BroadcastTransaction(node, tx, err_string, /*max_tx_fee=*/0, /*relay=*/true, /*wait_callback=*/true);
846846
if (err != TransactionError::OK) {
847847
throw JSONRPCTransactionError(err,
848848
strprintf("transaction broadcast failed: %s (all transactions were submitted, %d transactions were broadcast successfully)",
849-
err_string, num_submitted));
849+
err_string, num_broadcast));
850850
}
851+
num_broadcast++;
851852
}
852853
UniValue rpc_result{UniValue::VOBJ};
853854
UniValue tx_result_map{UniValue::VOBJ};

0 commit comments

Comments
 (0)