Skip to content

Commit 229f2f1

Browse files
OnionMessenger: support generating peer connection events.
Useful if we are in the mode of interception OMs for offline peers, so users know when to re-inject intercepted OMs.
1 parent 3f89998 commit 229f2f1

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

lightning/src/events/mod.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,12 @@ pub enum Event {
10431043
/// The onion message intended to be forwarded to `peer_node_id`.
10441044
message: msgs::OnionMessage,
10451045
},
1046+
///
1047+
OnionMessagePeerConnected {
1048+
/// The node id of the peer we just connected to, who advertises support for
1049+
/// onion messages.
1050+
peer_node_id: PublicKey,
1051+
}
10461052
}
10471053

10481054
impl Writeable for Event {
@@ -1294,6 +1300,12 @@ impl Writeable for Event {
12941300
(0, peer_node_id, required),
12951301
(2, message, required),
12961302
});
1303+
},
1304+
&Event::OnionMessagePeerConnected { ref peer_node_id } => {
1305+
39u8.write(writer)?;
1306+
write_tlv_fields!(writer, {
1307+
(0, peer_node_id, required),
1308+
});
12971309
}
12981310
// Note that, going forward, all new events must only write data inside of
12991311
// `write_tlv_fields`. Versions 0.0.101+ will ignore odd-numbered events that write
@@ -1718,6 +1730,17 @@ impl MaybeReadable for Event {
17181730
};
17191731
f()
17201732
},
1733+
39u8 => {
1734+
let f = || {
1735+
_init_and_read_len_prefixed_tlv_fields!(reader, {
1736+
(0, peer_node_id, required),
1737+
});
1738+
Ok(Some(Event::OnionMessagePeerConnected {
1739+
peer_node_id: peer_node_id.0.unwrap()
1740+
}))
1741+
};
1742+
f()
1743+
},
17211744
// Versions prior to 0.0.100 did not ignore odd types, instead returning InvalidValue.
17221745
// Version 0.0.100 failed to properly ignore odd types, possibly resulting in corrupt
17231746
// reads.

lightning/src/onion_message/messenger.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,6 +1041,11 @@ where
10411041
.entry(*their_node_id)
10421042
.or_insert_with(|| OnionMessageRecipient::ConnectedPeer(VecDeque::new()))
10431043
.mark_connected();
1044+
if self.intercept_oms_for_offline_peers {
1045+
self.pending_events.lock().unwrap().push(
1046+
Event::OnionMessagePeerConnected { peer_node_id: *their_node_id }
1047+
);
1048+
}
10441049
} else {
10451050
self.message_recipients.lock().unwrap().remove(their_node_id);
10461051
}

0 commit comments

Comments
 (0)