@@ -2270,9 +2270,15 @@ fn channel_monitor_network_test() {
22702270	nodes[1].node.force_close_broadcasting_latest_txn(&chan_1.2, &nodes[0].node.get_our_node_id()).unwrap();
22712271	check_added_monitors!(nodes[1], 1);
22722272	check_closed_broadcast!(nodes[1], true);
2273+ 	check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed, [nodes[0].node.get_our_node_id()], 100000);
22732274	{
22742275		let mut node_txn = test_txn_broadcast(&nodes[1], &chan_1, None, HTLCType::NONE);
22752276		assert_eq!(node_txn.len(), 1);
2277+ 		mine_transaction(&nodes[1], &node_txn[0]);
2278+ 		if nodes[1].connect_style.borrow().updates_best_block_first() {
2279+ 			let _ = nodes[1].tx_broadcaster.txn_broadcast();
2280+ 		}
2281+ 
22762282		mine_transaction(&nodes[0], &node_txn[0]);
22772283		check_added_monitors!(nodes[0], 1);
22782284		test_txn_broadcast(&nodes[0], &chan_1, Some(node_txn[0].clone()), HTLCType::NONE);
@@ -2281,7 +2287,6 @@ fn channel_monitor_network_test() {
22812287	assert_eq!(nodes[0].node.list_channels().len(), 0);
22822288	assert_eq!(nodes[1].node.list_channels().len(), 1);
22832289	check_closed_event!(nodes[0], 1, ClosureReason::CommitmentTxConfirmed, [nodes[1].node.get_our_node_id()], 100000);
2284- 	check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed, [nodes[0].node.get_our_node_id()], 100000);
22852290
22862291	// One pending HTLC is discarded by the force-close:
22872292	let (payment_preimage_1, payment_hash_1, ..) = route_payment(&nodes[1], &[&nodes[2], &nodes[3]], 3_000_000);
@@ -3552,7 +3557,7 @@ fn test_htlc_ignore_latest_remote_commitment() {
35523557		// connect_style.
35533558		return;
35543559	}
3555- 	create_announced_chan_between_nodes(&nodes, 0, 1);
3560+ 	let funding_tx =  create_announced_chan_between_nodes(&nodes, 0, 1).3 ;
35563561
35573562	route_payment(&nodes[0], &[&nodes[1]], 10000000);
35583563	nodes[0].node.force_close_broadcasting_latest_txn(&nodes[0].node.list_channels()[0].channel_id, &nodes[1].node.get_our_node_id()).unwrap();
@@ -3561,11 +3566,12 @@ fn test_htlc_ignore_latest_remote_commitment() {
35613566	check_added_monitors!(nodes[0], 1);
35623567	check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);
35633568
3564- 	let node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
3565- 	assert_eq!(node_txn.len(), 3);
3566- 	assert_eq!(node_txn[0].txid(), node_txn[1].txid());
3569+ 	let node_txn = nodes[0].tx_broadcaster.unique_txn_broadcast();
3570+ 	assert_eq!(node_txn.len(), 2);
3571+ 	check_spends!(node_txn[0], funding_tx);
3572+ 	check_spends!(node_txn[1], node_txn[0]);
35673573
3568- 	let block = create_dummy_block(nodes[1].best_block_hash(), 42, vec![node_txn[0].clone(), node_txn[1].clone() ]);
3574+ 	let block = create_dummy_block(nodes[1].best_block_hash(), 42, vec![node_txn[0].clone()]);
35693575	connect_block(&nodes[1], &block);
35703576	check_closed_broadcast!(nodes[1], true);
35713577	check_added_monitors!(nodes[1], 1);
@@ -3622,7 +3628,7 @@ fn test_force_close_fail_back() {
36223628	check_closed_broadcast!(nodes[2], true);
36233629	check_added_monitors!(nodes[2], 1);
36243630	check_closed_event!(nodes[2], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);
3625- 	let tx  = {
3631+ 	let commitment_tx  = {
36263632		let mut node_txn = nodes[2].tx_broadcaster.txn_broadcasted.lock().unwrap();
36273633		// Note that we don't bother broadcasting the HTLC-Success transaction here as we don't
36283634		// have a use for it unless nodes[2] learns the preimage somehow, the funds will go
@@ -3631,7 +3637,7 @@ fn test_force_close_fail_back() {
36313637		node_txn.remove(0)
36323638	};
36333639
3634- 	mine_transaction(&nodes[1], &tx );
3640+ 	mine_transaction(&nodes[1], &commitment_tx );
36353641
36363642	// Note no UpdateHTLCs event here from nodes[1] to nodes[0]!
36373643	check_closed_broadcast!(nodes[1], true);
@@ -3643,15 +3649,16 @@ fn test_force_close_fail_back() {
36433649		get_monitor!(nodes[2], payment_event.commitment_msg.channel_id)
36443650			.provide_payment_preimage(&our_payment_hash, &our_payment_preimage, &node_cfgs[2].tx_broadcaster, &LowerBoundedFeeEstimator::new(node_cfgs[2].fee_estimator), &node_cfgs[2].logger);
36453651	}
3646- 	mine_transaction(&nodes[2], &tx);
3647- 	let node_txn = nodes[2].tx_broadcaster.txn_broadcasted.lock().unwrap();
3648- 	assert_eq!(node_txn.len(), 1);
3649- 	assert_eq!(node_txn[0].input.len(), 1);
3650- 	assert_eq!(node_txn[0].input[0].previous_output.txid, tx.txid());
3651- 	assert_eq!(node_txn[0].lock_time, LockTime::ZERO); // Must be an HTLC-Success
3652- 	assert_eq!(node_txn[0].input[0].witness.len(), 5); // Must be an HTLC-Success
3652+ 	mine_transaction(&nodes[2], &commitment_tx);
3653+ 	let mut node_txn = nodes[2].tx_broadcaster.txn_broadcast();
3654+ 	assert_eq!(node_txn.len(), if nodes[2].connect_style.borrow().updates_best_block_first() { 2 } else { 1 });
3655+ 	let htlc_tx = node_txn.pop().unwrap();
3656+ 	assert_eq!(htlc_tx.input.len(), 1);
3657+ 	assert_eq!(htlc_tx.input[0].previous_output.txid, commitment_tx.txid());
3658+ 	assert_eq!(htlc_tx.lock_time, LockTime::ZERO); // Must be an HTLC-Success
3659+ 	assert_eq!(htlc_tx.input[0].witness.len(), 5); // Must be an HTLC-Success
36533660
3654- 	check_spends!(node_txn[0], tx );
3661+ 	check_spends!(htlc_tx, commitment_tx );
36553662}
36563663
36573664#[test]
@@ -8876,7 +8883,12 @@ fn do_test_onchain_htlc_settlement_after_close(broadcast_alice: bool, go_onchain
88768883			assert_eq!(bob_txn.len(), 1);
88778884			check_spends!(bob_txn[0], txn_to_broadcast[0]);
88788885		} else {
8879- 			assert_eq!(bob_txn.len(), 2);
8886+ 			if nodes[1].connect_style.borrow().updates_best_block_first() {
8887+ 				assert_eq!(bob_txn.len(), 3);
8888+ 				assert_eq!(bob_txn[0].txid(), bob_txn[1].txid());
8889+ 			} else {
8890+ 				assert_eq!(bob_txn.len(), 2);
8891+ 			}
88808892			check_spends!(bob_txn[0], chan_ab.3);
88818893		}
88828894	}
@@ -8892,15 +8904,16 @@ fn do_test_onchain_htlc_settlement_after_close(broadcast_alice: bool, go_onchain
88928904		// If Alice force-closed, Bob only broadcasts a HTLC-output-claiming transaction. Otherwise,
88938905		// Bob force-closed and broadcasts the commitment transaction along with a
88948906		// HTLC-output-claiming transaction.
8895- 		let bob_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().clone();
8907+ 		let mut  bob_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().clone();
88968908		if broadcast_alice {
88978909			assert_eq!(bob_txn.len(), 1);
88988910			check_spends!(bob_txn[0], txn_to_broadcast[0]);
88998911			assert_eq!(bob_txn[0].input[0].witness.last().unwrap().len(), script_weight);
89008912		} else {
8901- 			assert_eq!(bob_txn.len(), 2);
8902- 			check_spends!(bob_txn[1], txn_to_broadcast[0]);
8903- 			assert_eq!(bob_txn[1].input[0].witness.last().unwrap().len(), script_weight);
8913+ 			assert_eq!(bob_txn.len(), if nodes[1].connect_style.borrow().updates_best_block_first() { 3 } else { 2 });
8914+ 			let htlc_tx = bob_txn.pop().unwrap();
8915+ 			check_spends!(htlc_tx, txn_to_broadcast[0]);
8916+ 			assert_eq!(htlc_tx.input[0].witness.last().unwrap().len(), script_weight);
89048917		}
89058918	}
89068919}
@@ -9376,8 +9389,12 @@ fn do_test_tx_confirmed_skipping_blocks_immediate_broadcast(test_height_before_t
93769389		// We should broadcast an HTLC transaction spending our funding transaction first
93779390		let spending_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
93789391		assert_eq!(spending_txn.len(), 2);
9379- 		assert_eq!(spending_txn[0].txid(), node_txn[0].txid());
9380- 		check_spends!(spending_txn[1], node_txn[0]);
9392+ 		let htlc_tx = if spending_txn[0].txid() == node_txn[0].txid() {
9393+ 			&spending_txn[1]
9394+ 		} else {
9395+ 			&spending_txn[0]
9396+ 		};
9397+ 		check_spends!(htlc_tx, node_txn[0]);
93819398		// We should also generate a SpendableOutputs event with the to_self output (as its
93829399		// timelock is up).
93839400		let descriptor_spend_txn = check_spendable_outputs!(nodes[1], node_cfgs[1].keys_manager);
@@ -9387,7 +9404,7 @@ fn do_test_tx_confirmed_skipping_blocks_immediate_broadcast(test_height_before_t
93879404		// should immediately fail-backwards the HTLC to the previous hop, without waiting for an
93889405		// additional block built on top of the current chain.
93899406		nodes[1].chain_monitor.chain_monitor.transactions_confirmed(
9390- 			&nodes[1].get_block_header(conf_height + 1), &[(0, &spending_txn[1] )], conf_height + 1);
9407+ 			&nodes[1].get_block_header(conf_height + 1), &[(0, htlc_tx )], conf_height + 1);
93919408		expect_pending_htlcs_forwardable_and_htlc_handling_failed!(nodes[1], vec![HTLCDestination::NextHopChannel { node_id: Some(nodes[2].node.get_our_node_id()), channel_id: channel_id }]);
93929409		check_added_monitors!(nodes[1], 1);
93939410
0 commit comments