Skip to content

Commit 452fdf4

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 371fad0 commit 452fdf4

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
@@ -823,6 +823,10 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
823823
chan_a_disconnected = true;
824824
drain_msg_events_on_disconnect!(0);
825825
}
826+
if monitor_a.should_update_manager.load(atomic::Ordering::Relaxed) {
827+
node_a_ser.0.clear();
828+
nodes[0].write(&mut node_a_ser).unwrap();
829+
}
826830
let (new_node_a, new_monitor_a) = reload_node!(node_a_ser, 0, monitor_a, keys_manager_a);
827831
nodes[0] = new_node_a;
828832
monitor_a = new_monitor_a;
@@ -850,6 +854,10 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
850854
chan_b_disconnected = true;
851855
drain_msg_events_on_disconnect!(2);
852856
}
857+
if monitor_c.should_update_manager.load(atomic::Ordering::Relaxed) {
858+
node_c_ser.0.clear();
859+
nodes[2].write(&mut node_c_ser).unwrap();
860+
}
853861
let (new_node_c, new_monitor_c) = reload_node!(node_c_ser, 2, monitor_c, keys_manager_c);
854862
nodes[2] = new_node_c;
855863
monitor_c = new_monitor_c;

0 commit comments

Comments
 (0)