Mutant created against commit 37912ec.
+1 -1 · cpp
This description is AI generated, mistakes can be made.
Intent: Make a -blocksonly -txreconciliation node allocate 4 OUTBOUND_FULL_RECONCILIATION slots. It never offers SENDTXRCNCL (net_processing checks ignore_incoming_txs), so every recon peer fails negotiation and gets disconnected. The slots churn forever and also shrink the inbound budget.
Behaviour change: Original: m_max_outbound_full_recon=0 under blocksonly, so ThreadOpenConnections never picks the recon type and addconnection outbound-full-recon is rejected. Mutant: max=4, the node keeps opening recon connections that get disconnected after the handshake, and m_max_automatic_outbound is 4 higher (4 fewer inbound slots).
Trigger: Start bitcoind with -txreconciliation -blocksonly and peers in addrman (or call addconnection outbound-full-recon on regtest, which now succeeds instead of failing).
Spec violation: PR's own comment: 'under -blocksonly these connections could never negotiate it and would waste their outbound slots'; BIP 330 negotiation is only offered by tx-relaying nodes.
Severity if undetected: medium
Why tests miss it: grep blocksonly in /work/pr-tests.diff and test/functional/p2p_sendtxrcncl.py (lines 207-210: inbound peer only), p2p_txrecon_*.py extra_args, denialofservice_tests.cpp (sets options directly)
Plausibility: Reads like a simplification: the -txreconciliation flag looks like it is enough on its own, and it is easy to assume blocksonly is already handled in net_processing.
Equivalence risk: If no test or user runs blocksonly with txreconciliation, nothing differs. But it is reachable by configuration, and the reconnect churn plus lost inbound slots are observable.
Commands and environment reported by the submitter
cmake -B build -DBUILD_GUI=OFF -DWITH_ZMQ=OFF -DENABLE_IPC=OFF && cmake --build build -j$(nproc)ctest --test-dir build -j$(nproc) && build/test/functional/test_runner.py -j$(nproc) --failfastmutant-harness operator: condition; location: AppInitMain lines 2189
Imported from mutant-harness 474b4f7.
Commands are shown as text and never executed by MutantHub.
0 comments
No comments yet
Discuss equivalence, reproduction difficulties, or a test that kills this mutant.