@@ -11293,6 +11293,36 @@ mod tests {
11293
11293
}
11294
11294
}
11295
11295
11296
+ #[test]
11297
+ fn test_channel_close_when_not_timely_accepted() {
11298
+ // Create network of two nodes
11299
+ let chanmon_cfgs = create_chanmon_cfgs(2);
11300
+ let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
11301
+ let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
11302
+ let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
11303
+
11304
+ // Try to create a channel from node 0, to 1.
11305
+ // The channel is initiated from the node 0 side,
11306
+ // But the accept channel message was never back sent by node 1
11307
+ // And hence never handled.
11308
+ let create_chan_id = nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None, None).unwrap();
11309
+ let open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
11310
+ assert_eq!(open_channel_msg.temporary_channel_id, create_chan_id);
11311
+
11312
+ // In the meantime, two timer tick passed
11313
+ nodes[0].node.timer_tick_occurred();
11314
+ nodes[0].node.timer_tick_occurred();
11315
+
11316
+ // Since accept channel message was never received
11317
+ // The channel should be forced close by now from node 0 side
11318
+ let events = nodes[0].node.get_and_clear_pending_msg_events();
11319
+ assert_eq!(events.len(), 1);
11320
+
11321
+ let node_0_per_peer_state = nodes[0].node.per_peer_state.read().unwrap();
11322
+ let per_peer_state = node_0_per_peer_state.get(&nodes[1].node.get_our_node_id()).unwrap().lock().unwrap();
11323
+ assert_eq!(per_peer_state.channel_by_id.len(), 0);
11324
+ }
11325
+
11296
11326
#[test]
11297
11327
fn test_drop_disconnected_peers_when_removing_channels() {
11298
11328
let chanmon_cfgs = create_chanmon_cfgs(2);
0 commit comments