Skip to content

Commit b79ced3

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 0f0004a commit b79ced3

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
@@ -798,6 +798,10 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
798798
chan_a_disconnected = true;
799799
drain_msg_events_on_disconnect!(0);
800800
}
801+
if monitor_a.should_update_manager.load(atomic::Ordering::Relaxed) {
802+
node_a_ser.0.clear();
803+
nodes[0].write(&mut node_a_ser).unwrap();
804+
}
801805
let (new_node_a, new_monitor_a) = reload_node!(node_a_ser, 0, monitor_a, keys_manager_a);
802806
nodes[0] = new_node_a;
803807
monitor_a = new_monitor_a;
@@ -825,6 +829,10 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
825829
chan_b_disconnected = true;
826830
drain_msg_events_on_disconnect!(2);
827831
}
832+
if monitor_c.should_update_manager.load(atomic::Ordering::Relaxed) {
833+
node_c_ser.0.clear();
834+
nodes[2].write(&mut node_c_ser).unwrap();
835+
}
828836
let (new_node_c, new_monitor_c) = reload_node!(node_c_ser, 2, monitor_c, keys_manager_c);
829837
nodes[2] = new_node_c;
830838
monitor_c = new_monitor_c;

0 commit comments

Comments
 (0)