Skip to content

Commit 4da7449

Browse files
committed
f Move event emission to own macro and avoid back-to-back locking
1 parent 989ff7f commit 4da7449

File tree

1 file changed

+33
-23
lines changed

1 file changed

+33
-23
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1496,18 +1496,30 @@ macro_rules! send_channel_ready {
14961496
}}
14971497
}
14981498

1499+
macro_rules! emit_channel_pending_event {
1500+
($locked_events: expr, $channel: expr) => {
1501+
if $channel.should_emit_channel_pending_event() {
1502+
$locked_events.push(events::Event::ChannelPending {
1503+
channel_id: $channel.channel_id(),
1504+
former_temporary_channel_id: $channel.temporary_channel_id(),
1505+
counterparty_node_id: $channel.get_counterparty_node_id(),
1506+
user_channel_id: $channel.get_user_id(),
1507+
funding_txo: $channel.get_funding_txo().unwrap().into_bitcoin_outpoint(),
1508+
});
1509+
$channel.set_channel_pending_event_emitted();
1510+
}
1511+
}
1512+
}
1513+
14991514
macro_rules! emit_channel_ready_event {
1500-
($self: expr, $channel: expr) => {
1515+
($locked_events: expr, $channel: expr) => {
15011516
if $channel.should_emit_channel_ready_event() {
1502-
{
1503-
let mut pending_events = $self.pending_events.lock().unwrap();
1504-
pending_events.push(events::Event::ChannelReady {
1505-
channel_id: $channel.channel_id(),
1506-
user_channel_id: $channel.get_user_id(),
1507-
counterparty_node_id: $channel.get_counterparty_node_id(),
1508-
channel_type: $channel.get_channel_type().clone(),
1509-
});
1510-
}
1517+
$locked_events.push(events::Event::ChannelReady {
1518+
channel_id: $channel.channel_id(),
1519+
user_channel_id: $channel.get_user_id(),
1520+
counterparty_node_id: $channel.get_counterparty_node_id(),
1521+
channel_type: $channel.get_channel_type().clone(),
1522+
});
15111523
$channel.set_channel_ready_event_emitted();
15121524
}
15131525
}
@@ -4285,20 +4297,12 @@ where
42854297
self.tx_broadcaster.broadcast_transaction(&tx);
42864298
}
42874299

4288-
if channel.should_emit_channel_pending_event() {
4300+
{
42894301
let mut pending_events = self.pending_events.lock().unwrap();
4290-
pending_events.push(events::Event::ChannelPending {
4291-
channel_id: channel.channel_id(),
4292-
former_temporary_channel_id: channel.temporary_channel_id(),
4293-
counterparty_node_id: counterparty_node_id,
4294-
user_channel_id: channel.get_user_id(),
4295-
funding_txo: channel.get_funding_txo().unwrap().into_bitcoin_outpoint(),
4296-
});
4297-
channel.set_channel_pending_event_emitted();
4302+
emit_channel_pending_event!(pending_events, channel);
4303+
emit_channel_ready_event!(pending_events, channel);
42984304
}
42994305

4300-
emit_channel_ready_event!(self, channel);
4301-
43024306
htlc_forwards
43034307
}
43044308

@@ -4723,7 +4727,10 @@ where
47234727
}
47244728
}
47254729

4726-
emit_channel_ready_event!(self, chan.get_mut());
4730+
{
4731+
let mut pending_events = self.pending_events.lock().unwrap();
4732+
emit_channel_ready_event!(pending_events, chan.get_mut());
4733+
}
47274734

47284735
Ok(())
47294736
},
@@ -6048,7 +6055,10 @@ where
60486055
}
60496056
}
60506057

6051-
emit_channel_ready_event!(self, channel);
6058+
{
6059+
let mut pending_events = self.pending_events.lock().unwrap();
6060+
emit_channel_ready_event!(pending_events, channel);
6061+
}
60526062

60536063
if let Some(announcement_sigs) = announcement_sigs {
60546064
log_trace!(self.logger, "Sending announcement_signatures for channel {}", log_bytes!(channel.channel_id()));

0 commit comments

Comments
 (0)