Skip to content

Commit 6a36d31

Browse files
committed
f Emit ChannelPending only after broadcast
1 parent 184d873 commit 6a36d31

File tree

3 files changed

+29
-19
lines changed

3 files changed

+29
-19
lines changed

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1859,13 +1859,13 @@ fn do_during_funding_monitor_fail(confirm_a_first: bool, restore_b_before_conf:
18591859
chanmon_cfgs[0].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
18601860
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &get_event_msg!(nodes[1], MessageSendEvent::SendFundingSigned, nodes[0].node.get_our_node_id()));
18611861
check_added_monitors!(nodes[0], 1);
1862-
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
18631862
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
18641863
assert!(nodes[0].node.get_and_clear_pending_events().is_empty());
18651864
chanmon_cfgs[0].persister.set_update_ret(ChannelMonitorUpdateStatus::Completed);
18661865
let (outpoint, latest_update, _) = nodes[0].chain_monitor.latest_monitor_update_id.lock().unwrap().get(&channel_id).unwrap().clone();
18671866
nodes[0].chain_monitor.chain_monitor.force_channel_monitor_updated(outpoint, latest_update);
18681867
check_added_monitors!(nodes[0], 0);
1868+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
18691869

18701870
let events = nodes[0].node.get_and_clear_pending_events();
18711871
assert_eq!(events.len(), 0);
@@ -2820,7 +2820,6 @@ fn do_test_outbound_reload_without_init_mon(use_0conf: bool) {
28202820

28212821
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &msg);
28222822
check_added_monitors!(nodes[0], 1);
2823-
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
28242823
}
28252824
_ => panic!("Unexpected event"),
28262825
}

lightning/src/ln/channelmanager.rs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4219,8 +4219,6 @@ where
42194219
});
42204220
}
42214221

4222-
emit_channel_ready_event!(self, channel);
4223-
42244222
macro_rules! handle_cs { () => {
42254223
if let Some(update) = commitment_update {
42264224
pending_msg_events.push(events::MessageSendEvent::UpdateHTLCs {
@@ -4251,8 +4249,19 @@ where
42514249
if let Some(tx) = funding_broadcastable {
42524250
log_info!(self.logger, "Broadcasting funding transaction with txid {}", tx.txid());
42534251
self.tx_broadcaster.broadcast_transaction(&tx);
4252+
4253+
let mut pending_events = self.pending_events.lock().unwrap();
4254+
pending_events.push(events::Event::ChannelPending {
4255+
channel_id: channel.channel_id(),
4256+
former_temporary_channel_id: channel.temporary_channel_id(),
4257+
counterparty_node_id: counterparty_node_id,
4258+
user_channel_id: channel.get_user_id(),
4259+
funding_txo: channel.get_funding_txo().unwrap().into_bitcoin_outpoint(),
4260+
});
42544261
}
42554262

4263+
emit_channel_ready_event!(self, channel);
4264+
42564265
htlc_forwards
42574266
}
42584267

@@ -4639,10 +4648,7 @@ where
46394648
hash_map::Entry::Occupied(mut chan) => {
46404649
let monitor = try_chan_entry!(self,
46414650
chan.get_mut().funding_signed(&msg, best_block, &self.signer_provider, &self.logger), chan);
4642-
let funding_txo = chan.get().get_funding_txo().unwrap();
4643-
let user_channel_id = chan.get().get_user_id();
4644-
let former_temporary_channel_id = chan.get().temporary_channel_id();
4645-
let update_res = self.chain_monitor.watch_channel(funding_txo, monitor);
4651+
let update_res = self.chain_monitor.watch_channel(chan.get().get_funding_txo().unwrap(), monitor);
46464652
let mut res = handle_new_monitor_update!(self, update_res, 0, peer_state_lock, peer_state, per_peer_state, chan);
46474653
if let Err(MsgHandleErrInternal { ref mut shutdown_finish, .. }) = res {
46484654
// We weren't able to watch the channel to begin with, so no updates should be made on
@@ -4651,15 +4657,6 @@ where
46514657
if let Some((ref mut shutdown_finish, _)) = shutdown_finish {
46524658
shutdown_finish.0.take();
46534659
}
4654-
} else {
4655-
let mut pending_events = self.pending_events.lock().unwrap();
4656-
pending_events.push(events::Event::ChannelPending {
4657-
channel_id: msg.channel_id,
4658-
former_temporary_channel_id,
4659-
counterparty_node_id: *counterparty_node_id,
4660-
user_channel_id,
4661-
funding_txo: funding_txo.into_bitcoin_outpoint(),
4662-
});
46634660
}
46644661
res
46654662
},

lightning/src/ln/priv_short_conf_tests.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,6 @@ fn test_0conf_channel_with_async_monitor() {
612612
MessageSendEvent::SendFundingSigned { node_id, msg } => {
613613
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
614614
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &msg);
615-
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
616615
check_added_monitors!(nodes[0], 1);
617616
}
618617
_ => panic!("Unexpected event"),
@@ -629,6 +628,22 @@ fn test_0conf_channel_with_async_monitor() {
629628

630629
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
631630
nodes[0].chain_monitor.complete_sole_pending_chan_update(&channel_id);
631+
632+
let events = nodes[0].node.get_and_clear_pending_events();
633+
assert_eq!(events.len(), 2);
634+
match events[0] {
635+
crate::events::Event::ChannelPending { ref counterparty_node_id, .. } => {
636+
assert_eq!(nodes[1].node.get_our_node_id(), *counterparty_node_id);
637+
},
638+
_ => panic!("Unexpected event"),
639+
}
640+
match events[1] {
641+
crate::events::Event::ChannelReady { ref counterparty_node_id, .. } => {
642+
assert_eq!(nodes[1].node.get_our_node_id(), *counterparty_node_id);
643+
},
644+
_ => panic!("Unexpected event"),
645+
}
646+
632647
let as_locked_update = nodes[0].node.get_and_clear_pending_msg_events();
633648

634649
// Note that the funding transaction is actually released when
@@ -643,7 +658,6 @@ fn test_0conf_channel_with_async_monitor() {
643658
}
644659
_ => panic!("Unexpected event"),
645660
}
646-
expect_channel_ready_event(&nodes[0], &nodes[1].node.get_our_node_id());
647661
expect_channel_ready_event(&nodes[1], &nodes[0].node.get_our_node_id());
648662

649663
let bs_channel_update = get_event_msg!(nodes[1], MessageSendEvent::SendChannelUpdate, nodes[0].node.get_our_node_id());

0 commit comments

Comments
 (0)