Skip to content

Commit fc7d776

Browse files
committed
[fuzz] Handle monitor updates during get_and_clear_pending_msg_events
Because we may now generate a monitor update during get_and_clear_pending_msg_events calls, we need to ensure we re-serialize the relevant ChannelManager before attempting to reload it, if such a monitor update occurred.
1 parent 429e32b commit fc7d776

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,10 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
822822
chan_a_disconnected = true;
823823
drain_msg_events_on_disconnect!(0);
824824
}
825+
if monitor_a.should_update_manager.load(atomic::Ordering::Relaxed) {
826+
node_a_ser.0.clear();
827+
nodes[0].write(&mut node_a_ser).unwrap();
828+
}
825829
let (new_node_a, new_monitor_a) = reload_node!(node_a_ser, 0, monitor_a, keys_manager_a);
826830
nodes[0] = new_node_a;
827831
monitor_a = new_monitor_a;
@@ -849,6 +853,10 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
849853
chan_b_disconnected = true;
850854
drain_msg_events_on_disconnect!(2);
851855
}
856+
if monitor_c.should_update_manager.load(atomic::Ordering::Relaxed) {
857+
node_c_ser.0.clear();
858+
nodes[2].write(&mut node_c_ser).unwrap();
859+
}
852860
let (new_node_c, new_monitor_c) = reload_node!(node_c_ser, 2, monitor_c, keys_manager_c);
853861
nodes[2] = new_node_c;
854862
monitor_c = new_monitor_c;

0 commit comments

Comments
 (0)