@@ -260,6 +260,12 @@ fn do_test_unconf_chan(reload_node: bool, reorg_after_reload: bool, use_funding_
260
260
} ;
261
261
nodes[ 0 ] . node = & nodes_0_deserialized;
262
262
assert ! ( nodes_0_read. is_empty( ) ) ;
263
+ if !reorg_after_reload {
264
+ // If the channel is already closed when we reload the node, we'll broadcast a closing
265
+ // transaction via the ChannelMonitor which is missing a corresponding channel.
266
+ assert_eq ! ( nodes[ 0 ] . tx_broadcaster. txn_broadcasted. lock( ) . unwrap( ) . len( ) , 1 ) ;
267
+ nodes[ 0 ] . tx_broadcaster . txn_broadcasted . lock ( ) . unwrap ( ) . clear ( ) ;
268
+ }
263
269
264
270
nodes[ 0 ] . chain_monitor . watch_channel ( chan_0_monitor. get_funding_txo ( ) . 0 . clone ( ) , chan_0_monitor) . unwrap ( ) ;
265
271
check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
@@ -290,6 +296,8 @@ fn do_test_unconf_chan(reload_node: bool, reorg_after_reload: bool, use_funding_
290
296
* nodes[ 0 ] . chain_monitor . expect_channel_force_closed . lock ( ) . unwrap ( ) = Some ( ( chan. 2 , true ) ) ;
291
297
nodes[ 0 ] . node . test_process_background_events ( ) ; // Required to free the pending background monitor update
292
298
check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
299
+ assert_eq ! ( nodes[ 0 ] . tx_broadcaster. txn_broadcasted. lock( ) . unwrap( ) . len( ) , 1 ) ;
300
+ nodes[ 0 ] . tx_broadcaster . txn_broadcasted . lock ( ) . unwrap ( ) . clear ( ) ;
293
301
294
302
// Now check that we can create a new channel
295
303
create_announced_chan_between_nodes ( & nodes, 0 , 1 , InitFeatures :: known ( ) , InitFeatures :: known ( ) ) ;
0 commit comments