Skip to content

Commit cf1a27e

Browse files
authored
Merge pull request #3594 from TheBlueMatt/2025-02-peer-connected-trait
Unify common message handler traits into one trait
2 parents 7188d5b + 10a78d2 commit cf1a27e

38 files changed

+1046
-1069
lines changed

fuzz/src/chanmon_consistency.rs

+39-39
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ use lightning::chain::{
4343
chainmonitor, channelmonitor, BestBlock, ChannelMonitorUpdateStatus, Confirm, Watch,
4444
};
4545
use lightning::events;
46-
use lightning::events::MessageSendEventsProvider;
4746
use lightning::ln::channel::FEE_SPIKE_BUFFER_FEE_INCREASE_MULTIPLE;
4847
use lightning::ln::channel_state::ChannelDetails;
4948
use lightning::ln::channelmanager::{
@@ -52,7 +51,10 @@ use lightning::ln::channelmanager::{
5251
};
5352
use lightning::ln::functional_test_utils::*;
5453
use lightning::ln::inbound_payment::ExpandedKey;
55-
use lightning::ln::msgs::{ChannelMessageHandler, CommitmentUpdate, Init, UpdateAddHTLC};
54+
use lightning::ln::msgs::{
55+
BaseMessageHandler, ChannelMessageHandler, CommitmentUpdate, Init, MessageSendEvent,
56+
UpdateAddHTLC,
57+
};
5658
use lightning::ln::script::ShutdownScript;
5759
use lightning::ln::types::ChannelId;
5860
use lightning::offers::invoice::UnsignedBolt12Invoice;
@@ -768,7 +770,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
768770
let open_channel = {
769771
let events = $source.get_and_clear_pending_msg_events();
770772
assert_eq!(events.len(), 1);
771-
if let events::MessageSendEvent::SendOpenChannel { ref msg, .. } = events[0] {
773+
if let MessageSendEvent::SendOpenChannel { ref msg, .. } = events[0] {
772774
msg.clone()
773775
} else {
774776
panic!("Wrong event type");
@@ -804,7 +806,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
804806
}
805807
let events = $dest.get_and_clear_pending_msg_events();
806808
assert_eq!(events.len(), 1);
807-
if let events::MessageSendEvent::SendAcceptChannel { ref msg, .. } = events[0] {
809+
if let MessageSendEvent::SendAcceptChannel { ref msg, .. } = events[0] {
808810
msg.clone()
809811
} else {
810812
panic!("Wrong event type");
@@ -847,7 +849,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
847849
let funding_created = {
848850
let events = $source.get_and_clear_pending_msg_events();
849851
assert_eq!(events.len(), 1);
850-
if let events::MessageSendEvent::SendFundingCreated { ref msg, .. } = events[0] {
852+
if let MessageSendEvent::SendFundingCreated { ref msg, .. } = events[0] {
851853
msg.clone()
852854
} else {
853855
panic!("Wrong event type");
@@ -858,7 +860,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
858860
let funding_signed = {
859861
let events = $dest.get_and_clear_pending_msg_events();
860862
assert_eq!(events.len(), 1);
861-
if let events::MessageSendEvent::SendFundingSigned { ref msg, .. } = events[0] {
863+
if let MessageSendEvent::SendFundingSigned { ref msg, .. } = events[0] {
862864
msg.clone()
863865
} else {
864866
panic!("Wrong event type");
@@ -913,9 +915,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
913915
}
914916
for (idx, node_event) in node_events.iter().enumerate() {
915917
for event in node_event {
916-
if let events::MessageSendEvent::SendChannelReady { ref node_id, ref msg } =
917-
event
918-
{
918+
if let MessageSendEvent::SendChannelReady { ref node_id, ref msg } = event {
919919
for node in $nodes.iter() {
920920
if node.get_our_node_id() == *node_id {
921921
node.handle_channel_ready($nodes[idx].get_our_node_id(), msg);
@@ -930,7 +930,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
930930
for node in $nodes.iter() {
931931
let events = node.get_and_clear_pending_msg_events();
932932
for event in events {
933-
if let events::MessageSendEvent::SendAnnouncementSignatures { .. } = event {
933+
if let MessageSendEvent::SendAnnouncementSignatures { .. } = event {
934934
} else {
935935
panic!("Wrong event type");
936936
}
@@ -1015,25 +1015,25 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
10151015
let expect_drop_id = if let Some(id) = expect_drop_node { Some(nodes[id].get_our_node_id()) } else { None };
10161016
for event in $excess_events {
10171017
let push_a = match event {
1018-
events::MessageSendEvent::UpdateHTLCs { ref node_id, .. } => {
1018+
MessageSendEvent::UpdateHTLCs { ref node_id, .. } => {
10191019
if Some(*node_id) == expect_drop_id { panic!("peer_disconnected should drop msgs bound for the disconnected peer"); }
10201020
*node_id == a_id
10211021
},
1022-
events::MessageSendEvent::SendRevokeAndACK { ref node_id, .. } => {
1022+
MessageSendEvent::SendRevokeAndACK { ref node_id, .. } => {
10231023
if Some(*node_id) == expect_drop_id { panic!("peer_disconnected should drop msgs bound for the disconnected peer"); }
10241024
*node_id == a_id
10251025
},
1026-
events::MessageSendEvent::SendChannelReestablish { ref node_id, .. } => {
1026+
MessageSendEvent::SendChannelReestablish { ref node_id, .. } => {
10271027
if Some(*node_id) == expect_drop_id { panic!("peer_disconnected should drop msgs bound for the disconnected peer"); }
10281028
*node_id == a_id
10291029
},
1030-
events::MessageSendEvent::SendStfu { ref node_id, .. } => {
1030+
MessageSendEvent::SendStfu { ref node_id, .. } => {
10311031
if Some(*node_id) == expect_drop_id { panic!("peer_disconnected should drop msgs bound for the disconnected peer"); }
10321032
*node_id == a_id
10331033
},
1034-
events::MessageSendEvent::SendChannelReady { .. } => continue,
1035-
events::MessageSendEvent::SendAnnouncementSignatures { .. } => continue,
1036-
events::MessageSendEvent::SendChannelUpdate { ref node_id, ref msg } => {
1034+
MessageSendEvent::SendChannelReady { .. } => continue,
1035+
MessageSendEvent::SendAnnouncementSignatures { .. } => continue,
1036+
MessageSendEvent::SendChannelUpdate { ref node_id, ref msg } => {
10371037
assert_eq!(msg.contents.channel_flags & 2, 0); // The disable bit must never be set!
10381038
if Some(*node_id) == expect_drop_id { panic!("peer_disconnected should drop msgs bound for the disconnected peer"); }
10391039
*node_id == a_id
@@ -1089,7 +1089,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
10891089
for event in &mut events_iter {
10901090
had_events = true;
10911091
match event {
1092-
events::MessageSendEvent::UpdateHTLCs { node_id, updates: CommitmentUpdate { update_add_htlcs, update_fail_htlcs, update_fulfill_htlcs, update_fail_malformed_htlcs, update_fee, commitment_signed } } => {
1092+
MessageSendEvent::UpdateHTLCs { node_id, updates: CommitmentUpdate { update_add_htlcs, update_fail_htlcs, update_fulfill_htlcs, update_fail_malformed_htlcs, update_fee, commitment_signed } } => {
10931093
for (idx, dest) in nodes.iter().enumerate() {
10941094
if dest.get_our_node_id() == node_id {
10951095
for update_add in update_add_htlcs.iter() {
@@ -1127,7 +1127,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
11271127
!update_fail_htlcs.is_empty() || !update_fail_malformed_htlcs.is_empty();
11281128
if $limit_events != ProcessMessages::AllMessages && processed_change {
11291129
// If we only want to process some messages, don't deliver the CS until later.
1130-
extra_ev = Some(events::MessageSendEvent::UpdateHTLCs { node_id, updates: CommitmentUpdate {
1130+
extra_ev = Some(MessageSendEvent::UpdateHTLCs { node_id, updates: CommitmentUpdate {
11311131
update_add_htlcs: Vec::new(),
11321132
update_fail_htlcs: Vec::new(),
11331133
update_fulfill_htlcs: Vec::new(),
@@ -1143,37 +1143,37 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
11431143
}
11441144
}
11451145
},
1146-
events::MessageSendEvent::SendRevokeAndACK { ref node_id, ref msg } => {
1146+
MessageSendEvent::SendRevokeAndACK { ref node_id, ref msg } => {
11471147
for (idx, dest) in nodes.iter().enumerate() {
11481148
if dest.get_our_node_id() == *node_id {
11491149
out.locked_write(format!("Delivering revoke_and_ack from node {} to node {}.\n", $node, idx).as_bytes());
11501150
dest.handle_revoke_and_ack(nodes[$node].get_our_node_id(), msg);
11511151
}
11521152
}
11531153
},
1154-
events::MessageSendEvent::SendChannelReestablish { ref node_id, ref msg } => {
1154+
MessageSendEvent::SendChannelReestablish { ref node_id, ref msg } => {
11551155
for (idx, dest) in nodes.iter().enumerate() {
11561156
if dest.get_our_node_id() == *node_id {
11571157
out.locked_write(format!("Delivering channel_reestablish from node {} to node {}.\n", $node, idx).as_bytes());
11581158
dest.handle_channel_reestablish(nodes[$node].get_our_node_id(), msg);
11591159
}
11601160
}
11611161
},
1162-
events::MessageSendEvent::SendStfu { ref node_id, ref msg } => {
1162+
MessageSendEvent::SendStfu { ref node_id, ref msg } => {
11631163
for (idx, dest) in nodes.iter().enumerate() {
11641164
if dest.get_our_node_id() == *node_id {
11651165
out.locked_write(format!("Delivering stfu from node {} to node {}.\n", $node, idx).as_bytes());
11661166
dest.handle_stfu(nodes[$node].get_our_node_id(), msg);
11671167
}
11681168
}
11691169
}
1170-
events::MessageSendEvent::SendChannelReady { .. } => {
1170+
MessageSendEvent::SendChannelReady { .. } => {
11711171
// Can be generated as a reestablish response
11721172
},
1173-
events::MessageSendEvent::SendAnnouncementSignatures { .. } => {
1173+
MessageSendEvent::SendAnnouncementSignatures { .. } => {
11741174
// Can be generated as a reestablish response
11751175
},
1176-
events::MessageSendEvent::SendChannelUpdate { ref msg, .. } => {
1176+
MessageSendEvent::SendChannelUpdate { ref msg, .. } => {
11771177
// When we reconnect we will resend a channel_update to make sure our
11781178
// counterparty has the latest parameters for receiving payments
11791179
// through us. We do, however, check that the message does not include
@@ -1216,13 +1216,13 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
12161216
if $counterparty_id == 0 {
12171217
for event in nodes[0].get_and_clear_pending_msg_events() {
12181218
match event {
1219-
events::MessageSendEvent::UpdateHTLCs { .. } => {},
1220-
events::MessageSendEvent::SendRevokeAndACK { .. } => {},
1221-
events::MessageSendEvent::SendChannelReestablish { .. } => {},
1222-
events::MessageSendEvent::SendStfu { .. } => {},
1223-
events::MessageSendEvent::SendChannelReady { .. } => {},
1224-
events::MessageSendEvent::SendAnnouncementSignatures { .. } => {},
1225-
events::MessageSendEvent::SendChannelUpdate { ref msg, .. } => {
1219+
MessageSendEvent::UpdateHTLCs { .. } => {},
1220+
MessageSendEvent::SendRevokeAndACK { .. } => {},
1221+
MessageSendEvent::SendChannelReestablish { .. } => {},
1222+
MessageSendEvent::SendStfu { .. } => {},
1223+
MessageSendEvent::SendChannelReady { .. } => {},
1224+
MessageSendEvent::SendAnnouncementSignatures { .. } => {},
1225+
MessageSendEvent::SendChannelUpdate { ref msg, .. } => {
12261226
assert_eq!(msg.contents.channel_flags & 2, 0); // The disable bit must never be set!
12271227
},
12281228
_ => {
@@ -1243,13 +1243,13 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
12431243
} else {
12441244
for event in nodes[2].get_and_clear_pending_msg_events() {
12451245
match event {
1246-
events::MessageSendEvent::UpdateHTLCs { .. } => {},
1247-
events::MessageSendEvent::SendRevokeAndACK { .. } => {},
1248-
events::MessageSendEvent::SendChannelReestablish { .. } => {},
1249-
events::MessageSendEvent::SendStfu { .. } => {},
1250-
events::MessageSendEvent::SendChannelReady { .. } => {},
1251-
events::MessageSendEvent::SendAnnouncementSignatures { .. } => {},
1252-
events::MessageSendEvent::SendChannelUpdate { ref msg, .. } => {
1246+
MessageSendEvent::UpdateHTLCs { .. } => {},
1247+
MessageSendEvent::SendRevokeAndACK { .. } => {},
1248+
MessageSendEvent::SendChannelReestablish { .. } => {},
1249+
MessageSendEvent::SendStfu { .. } => {},
1250+
MessageSendEvent::SendChannelReady { .. } => {},
1251+
MessageSendEvent::SendAnnouncementSignatures { .. } => {},
1252+
MessageSendEvent::SendChannelUpdate { ref msg, .. } => {
12531253
assert_eq!(msg.contents.channel_flags & 2, 0); // The disable bit must never be set!
12541254
},
12551255
_ => {

fuzz/src/onion_message.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use lightning::blinded_path::message::{
1010
};
1111
use lightning::blinded_path::EmptyNodeIdLookUp;
1212
use lightning::ln::inbound_payment::ExpandedKey;
13-
use lightning::ln::msgs::{self, OnionMessageHandler};
13+
use lightning::ln::msgs::{self, BaseMessageHandler, DecodeError, OnionMessageHandler};
1414
use lightning::ln::peer_handler::IgnoringMessageHandler;
1515
use lightning::ln::script::ShutdownScript;
1616
use lightning::offers::invoice::UnsignedBolt12Invoice;
@@ -170,7 +170,7 @@ impl CustomOnionMessageHandler for TestCustomMessageHandler {
170170
}
171171
fn read_custom_message<R: io::Read>(
172172
&self, _message_type: u64, buffer: &mut R,
173-
) -> Result<Option<Self::CustomMessage>, msgs::DecodeError> {
173+
) -> Result<Option<Self::CustomMessage>, DecodeError> {
174174
let mut buf = Vec::new();
175175
buffer.read_to_limit(&mut buf, u64::MAX)?;
176176
return Ok(Some(TestCustomMessage {}));

lightning-background-processor/src/lib.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1070,15 +1070,13 @@ mod tests {
10701070
use lightning::chain::channelmonitor::ANTI_REORG_DELAY;
10711071
use lightning::chain::transaction::OutPoint;
10721072
use lightning::chain::{chainmonitor, BestBlock, Confirm, Filter};
1073-
use lightning::events::{
1074-
Event, MessageSendEvent, MessageSendEventsProvider, PathFailure, ReplayEvent,
1075-
};
1073+
use lightning::events::{Event, PathFailure, ReplayEvent};
10761074
use lightning::ln::channelmanager;
10771075
use lightning::ln::channelmanager::{
10781076
ChainParameters, PaymentId, BREAKDOWN_TIMEOUT, MIN_CLTV_EXPIRY_DELTA,
10791077
};
10801078
use lightning::ln::functional_test_utils::*;
1081-
use lightning::ln::msgs::{ChannelMessageHandler, Init};
1079+
use lightning::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, Init, MessageSendEvent};
10821080
use lightning::ln::peer_handler::{
10831081
IgnoringMessageHandler, MessageHandler, PeerManager, SocketDescriptor,
10841082
};

lightning-dns-resolver/src/lib.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,9 @@ mod test {
164164
use lightning::events::{Event, PaymentPurpose};
165165
use lightning::ln::channelmanager::{PaymentId, Retry};
166166
use lightning::ln::functional_test_utils::*;
167-
use lightning::ln::msgs::{ChannelMessageHandler, Init, OnionMessageHandler};
167+
use lightning::ln::msgs::{
168+
BaseMessageHandler, ChannelMessageHandler, Init, OnionMessageHandler,
169+
};
168170
use lightning::ln::peer_handler::IgnoringMessageHandler;
169171
use lightning::onion_message::dns_resolution::{HumanReadableName, OMNameResolver};
170172
use lightning::onion_message::messenger::{

lightning-liquidity/tests/common/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use lightning::chain::{chainmonitor, BestBlock, Confirm};
1515
use lightning::ln::channelmanager;
1616
use lightning::ln::channelmanager::ChainParameters;
1717
use lightning::ln::functional_test_utils::*;
18-
use lightning::ln::msgs::{ChannelMessageHandler, Init};
18+
use lightning::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, Init};
1919
use lightning::ln::peer_handler::{
2020
IgnoringMessageHandler, MessageHandler, PeerManager, SocketDescriptor,
2121
};

lightning-net-tokio/src/lib.rs

+15-24
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,6 @@ mod tests {
623623
use bitcoin::constants::ChainHash;
624624
use bitcoin::secp256k1::{PublicKey, Secp256k1, SecretKey};
625625
use bitcoin::Network;
626-
use lightning::events::*;
627626
use lightning::ln::msgs::*;
628627
use lightning::ln::peer_handler::{IgnoringMessageHandler, MessageHandler, PeerManager};
629628
use lightning::routing::gossip::NodeId;
@@ -684,12 +683,6 @@ mod tests {
684683
) -> Option<NodeAnnouncement> {
685684
None
686685
}
687-
fn peer_connected(
688-
&self, _their_node_id: PublicKey, _init_msg: &Init, _inbound: bool,
689-
) -> Result<(), ()> {
690-
Ok(())
691-
}
692-
fn peer_disconnected(&self, _their_node_id: PublicKey) {}
693686
fn handle_reply_channel_range(
694687
&self, _their_node_id: PublicKey, _msg: ReplyChannelRange,
695688
) -> Result<(), LightningError> {
@@ -710,12 +703,6 @@ mod tests {
710703
) -> Result<(), LightningError> {
711704
Ok(())
712705
}
713-
fn provided_node_features(&self) -> NodeFeatures {
714-
NodeFeatures::empty()
715-
}
716-
fn provided_init_features(&self, _their_node_id: PublicKey) -> InitFeatures {
717-
InitFeatures::empty()
718-
}
719706
fn processing_queue_high(&self) -> bool {
720707
false
721708
}
@@ -766,35 +753,39 @@ mod tests {
766753
&self, _their_node_id: PublicKey, _msg: PeerStorageRetrieval,
767754
) {
768755
}
756+
fn handle_channel_reestablish(&self, _their_node_id: PublicKey, _msg: &ChannelReestablish) {
757+
}
758+
fn handle_error(&self, _their_node_id: PublicKey, _msg: &ErrorMessage) {}
759+
fn get_chain_hashes(&self) -> Option<Vec<ChainHash>> {
760+
Some(vec![ChainHash::using_genesis_block(Network::Testnet)])
761+
}
762+
fn message_received(&self) {}
763+
}
764+
impl BaseMessageHandler for MsgHandler {
769765
fn peer_disconnected(&self, their_node_id: PublicKey) {
770766
if their_node_id == self.expected_pubkey {
771767
self.disconnected_flag.store(true, Ordering::SeqCst);
772-
self.pubkey_disconnected.clone().try_send(()).unwrap();
768+
// This method is called twice as we're two message handlers. `try_send` will fail
769+
// the second time.
770+
let _ = self.pubkey_disconnected.clone().try_send(());
773771
}
774772
}
775773
fn peer_connected(
776774
&self, their_node_id: PublicKey, _init_msg: &Init, _inbound: bool,
777775
) -> Result<(), ()> {
778776
if their_node_id == self.expected_pubkey {
779-
self.pubkey_connected.clone().try_send(()).unwrap();
777+
// This method is called twice as we're two message handlers. `try_send` will fail
778+
// the second time.
779+
let _ = self.pubkey_connected.clone().try_send(());
780780
}
781781
Ok(())
782782
}
783-
fn handle_channel_reestablish(&self, _their_node_id: PublicKey, _msg: &ChannelReestablish) {
784-
}
785-
fn handle_error(&self, _their_node_id: PublicKey, _msg: &ErrorMessage) {}
786783
fn provided_node_features(&self) -> NodeFeatures {
787784
NodeFeatures::empty()
788785
}
789786
fn provided_init_features(&self, _their_node_id: PublicKey) -> InitFeatures {
790787
InitFeatures::empty()
791788
}
792-
fn get_chain_hashes(&self) -> Option<Vec<ChainHash>> {
793-
Some(vec![ChainHash::using_genesis_block(Network::Testnet)])
794-
}
795-
fn message_received(&self) {}
796-
}
797-
impl MessageSendEventsProvider for MsgHandler {
798789
fn get_and_clear_pending_msg_events(&self) -> Vec<MessageSendEvent> {
799790
let mut ret = Vec::new();
800791
mem::swap(&mut *self.msg_events.lock().unwrap(), &mut ret);

lightning-persister/src/fs_store.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,9 @@ mod tests {
501501
use lightning::chain::chainmonitor::Persist;
502502
use lightning::chain::ChannelMonitorUpdateStatus;
503503
use lightning::check_closed_event;
504-
use lightning::events::{ClosureReason, MessageSendEventsProvider};
504+
use lightning::events::ClosureReason;
505505
use lightning::ln::functional_test_utils::*;
506+
use lightning::ln::msgs::BaseMessageHandler;
506507
use lightning::util::persist::read_channel_monitors;
507508
use lightning::util::test_utils;
508509

lightning/src/chain/chainmonitor.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -928,9 +928,9 @@ mod tests {
928928
use crate::{get_htlc_update_msgs, get_revoke_commit_msgs};
929929
use crate::chain::{ChannelMonitorUpdateStatus, Watch};
930930
use crate::chain::channelmonitor::ANTI_REORG_DELAY;
931-
use crate::events::{ClosureReason, Event, MessageSendEvent, MessageSendEventsProvider};
931+
use crate::events::{ClosureReason, Event};
932932
use crate::ln::functional_test_utils::*;
933-
use crate::ln::msgs::ChannelMessageHandler;
933+
use crate::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, MessageSendEvent};
934934

935935
const CHAINSYNC_MONITOR_PARTITION_FACTOR: u32 = 5;
936936

0 commit comments

Comments
 (0)