Skip to content

Commit 0ed4c2b

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 9943c98 commit 0ed4c2b

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
@@ -800,6 +800,10 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
800800
chan_a_disconnected = true;
801801
drain_msg_events_on_disconnect!(0);
802802
}
803+
if monitor_a.should_update_manager.load(atomic::Ordering::Relaxed) {
804+
node_a_ser.0.clear();
805+
nodes[0].write(&mut node_a_ser).unwrap();
806+
}
803807
let (new_node_a, new_monitor_a) = reload_node!(node_a_ser, 0, monitor_a, keys_manager_a);
804808
nodes[0] = new_node_a;
805809
monitor_a = new_monitor_a;
@@ -827,6 +831,10 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
827831
chan_b_disconnected = true;
828832
drain_msg_events_on_disconnect!(2);
829833
}
834+
if monitor_c.should_update_manager.load(atomic::Ordering::Relaxed) {
835+
node_c_ser.0.clear();
836+
nodes[2].write(&mut node_c_ser).unwrap();
837+
}
830838
let (new_node_c, new_monitor_c) = reload_node!(node_c_ser, 2, monitor_c, keys_manager_c);
831839
nodes[2] = new_node_c;
832840
monitor_c = new_monitor_c;

0 commit comments

Comments
 (0)