diff --git a/.github/workflows/cont_integration.yml b/.github/workflows/cont_integration.yml index 09b72318a..59021ed12 100644 --- a/.github/workflows/cont_integration.yml +++ b/.github/workflows/cont_integration.yml @@ -59,6 +59,7 @@ jobs: cargo update -p time --precise "0.3.41" cargo update -p proptest --precise "1.8.0" cargo update -p "getrandom@0.4.2" --precise "0.2.17" + cargo update -p "hyper-rustls" --precise "0.27.7" - name: Pin dependencies for MSRV if: matrix.rust.version == '1.63.0' run: ./ci/pin-msrv.sh diff --git a/ci/pin-msrv.sh b/ci/pin-msrv.sh index 67929d867..faab1cb42 100755 --- a/ci/pin-msrv.sh +++ b/ci/pin-msrv.sh @@ -29,7 +29,7 @@ cargo update -p base64ct --precise "1.6.0" cargo update -p minreq --precise "2.13.2" cargo update -p tracing --precise "0.1.40" cargo update -p tracing-core --precise "0.1.33" -cargo update -p "webpki-roots@1.0.6" --precise "1.0.1" +cargo update -p "webpki-roots@1.0.7" --precise "1.0.1" cargo update -p rayon --precise "1.10.0" cargo update -p rayon-core --precise "1.12.1" cargo update -p openssl --precise "0.10.73" @@ -53,10 +53,12 @@ cargo update -p unicode-ident --precise "1.0.13" cargo update -p hyper-util --precise "0.1.6" cargo update -p pin-project --precise "1.1.5" cargo update -p pin-project-internal --precise "1.1.5" -cargo update -p "rustls@0.23.37" --precise "0.23.26" +cargo update -p "rustls@0.23.38" --precise "0.23.26" +cargo update -p "libc" --precise "0.2.183" +cargo update -p "semver" --precise "1.0.27" # all pinning required due to `clap` usage in `example_cli` -cargo update -p "clap@4.6.0" --precise "4.5.17" +cargo update -p "clap@4.6.1" --precise "4.5.17" cargo update -p proc-macro2 --precise "1.0.92" cargo update -p quote --precise "1.0.41" cargo update -p syn --precise "2.0.106" diff --git a/crates/chain/src/canonical_iter.rs b/crates/chain/src/canonical_iter.rs index 7ff04249b..41f17e527 100644 --- a/crates/chain/src/canonical_iter.rs +++ b/crates/chain/src/canonical_iter.rs @@ -218,6 +218,7 @@ impl Iterator for CanonicalIter<'_, A, C> { if !self.is_canonicalized(txid) { self.mark_canonical(txid, tx, CanonicalReason::assumed()); } + continue; } if let Some((txid, tx, anchors)) = self.unprocessed_anchored_txs.next() { diff --git a/crates/chain/tests/test_tx_graph_conflicts.rs b/crates/chain/tests/test_tx_graph_conflicts.rs index 113a985b4..abfd950c8 100644 --- a/crates/chain/tests/test_tx_graph_conflicts.rs +++ b/crates/chain/tests/test_tx_graph_conflicts.rs @@ -943,6 +943,34 @@ fn test_tx_conflict_handling() { confirmed: Amount::ZERO, }, }, + Scenario { + name: "only assumed-canonical txs are yielded without anchored or seen txs", + tx_templates: &[ + TxTemplate { + tx_name: "assumed_a", + inputs: &[TxInTemplate::Bogus], + outputs: &[TxOutTemplate::new(21_000, Some(0))], + assume_canonical: true, + ..Default::default() + }, + TxTemplate { + tx_name: "assumed_b", + inputs: &[TxInTemplate::Bogus], + outputs: &[TxOutTemplate::new(18_000, Some(1))], + assume_canonical: true, + ..Default::default() + }, + ], + exp_chain_txs: HashSet::from(["assumed_a", "assumed_b"]), + exp_chain_txouts: HashSet::from([("assumed_a", 0), ("assumed_b", 0)]), + exp_unspents: HashSet::from([("assumed_a", 0), ("assumed_b", 0)]), + exp_balance: Balance { + immature: Amount::ZERO, + trusted_pending: Amount::from_sat(21_000 + 18_000), + untrusted_pending: Amount::ZERO, + confirmed: Amount::ZERO, + }, + }, Scenario { name: "coinbase tx must not become unconfirmed", tx_templates: &[