Skip to content

Commit 78c8fe7

Browse files
committed
Add new wire messaging and events but don't handle them
1 parent 334712e commit 78c8fe7

File tree

8 files changed

+476
-2
lines changed

8 files changed

+476
-2
lines changed

lightning-net-tokio/src/lib.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,17 @@ mod tests {
602602
fn handle_update_fee(&self, _their_node_id: &PublicKey, _msg: &UpdateFee) {}
603603
fn handle_announcement_signatures(&self, _their_node_id: &PublicKey, _msg: &AnnouncementSignatures) {}
604604
fn handle_channel_update(&self, _their_node_id: &PublicKey, _msg: &ChannelUpdate) {}
605+
fn handle_open_channel_v2(&self, _their_node_id: &PublicKey, _their_features: InitFeatures, _msg: &OpenChannelV2) {}
606+
fn handle_accept_channel_v2(&self, _their_node_id: &PublicKey, _their_features: InitFeatures, _msg: &AcceptChannelV2) {}
607+
fn handle_tx_add_input(&self, _their_node_id: &PublicKey, _msg: &TxAddInput) {}
608+
fn handle_tx_add_output(&self, _their_node_id: &PublicKey, _msg: &TxAddOutput) {}
609+
fn handle_tx_remove_input(&self, _their_node_id: &PublicKey, _msg: &TxRemoveInput) {}
610+
fn handle_tx_remove_output(&self, _their_node_id: &PublicKey, _msg: &TxRemoveOutput) {}
611+
fn handle_tx_complete(&self, _their_node_id: &PublicKey, _msg: &TxComplete) {}
612+
fn handle_tx_signatures(&self, _their_node_id: &PublicKey, _msg: &TxSignatures) {}
613+
fn handle_tx_init_rbf(&self, _their_node_id: &PublicKey, _msg: &TxInitRbf) {}
614+
fn handle_tx_ack_rbf(&self, _their_node_id: &PublicKey, _msg: &TxAckRbf) {}
615+
fn handle_tx_abort(&self, _their_node_id: &PublicKey, _msg: &TxAbort) {}
605616
fn peer_disconnected(&self, their_node_id: &PublicKey, _no_connection_possible: bool) {
606617
if *their_node_id == self.expected_pubkey {
607618
self.disconnected_flag.store(true, Ordering::SeqCst);

lightning/src/ln/channelmanager.rs

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5923,11 +5923,23 @@ where
59235923
let _ = handle_error!(self, self.internal_open_channel(counterparty_node_id, their_features, msg), *counterparty_node_id);
59245924
}
59255925

5926+
fn handle_open_channel_v2(&self, counterparty_node_id: &PublicKey, _their_features: InitFeatures, msg: &msgs::OpenChannelV2) {
5927+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
5928+
"Dual-funded channels not supported".to_owned(),
5929+
msg.temporary_channel_id.clone())), *counterparty_node_id);
5930+
}
5931+
59265932
fn handle_accept_channel(&self, counterparty_node_id: &PublicKey, their_features: InitFeatures, msg: &msgs::AcceptChannel) {
59275933
let _persistence_guard = PersistenceNotifierGuard::notify_on_drop(&self.total_consistency_lock, &self.persistence_notifier);
59285934
let _ = handle_error!(self, self.internal_accept_channel(counterparty_node_id, their_features, msg), *counterparty_node_id);
59295935
}
59305936

5937+
fn handle_accept_channel_v2(&self, counterparty_node_id: &PublicKey, _their_features: InitFeatures, msg: &msgs::AcceptChannelV2) {
5938+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
5939+
"Dual-funded channels not supported".to_owned(),
5940+
msg.temporary_channel_id.clone())), *counterparty_node_id);
5941+
}
5942+
59315943
fn handle_funding_created(&self, counterparty_node_id: &PublicKey, msg: &msgs::FundingCreated) {
59325944
let _persistence_guard = PersistenceNotifierGuard::notify_on_drop(&self.total_consistency_lock, &self.persistence_notifier);
59335945
let _ = handle_error!(self, self.internal_funding_created(counterparty_node_id, msg), *counterparty_node_id);
@@ -6033,22 +6045,39 @@ where
60336045
});
60346046
pending_msg_events.retain(|msg| {
60356047
match msg {
6048+
// V1 Channel Establishment
60366049
&events::MessageSendEvent::SendAcceptChannel { .. } => false,
60376050
&events::MessageSendEvent::SendOpenChannel { .. } => false,
60386051
&events::MessageSendEvent::SendFundingCreated { .. } => false,
60396052
&events::MessageSendEvent::SendFundingSigned { .. } => false,
6053+
// V2 Channel Establishment
6054+
&events::MessageSendEvent::SendAcceptChannelV2 { .. } => false,
6055+
&events::MessageSendEvent::SendOpenChannelV2 { .. } => false,
6056+
// Common Channel Establishment
60406057
&events::MessageSendEvent::SendChannelReady { .. } => false,
60416058
&events::MessageSendEvent::SendAnnouncementSignatures { .. } => false,
6059+
// Interactive Transaction Construction
6060+
&events::MessageSendEvent::SendTxAddInput { .. } => false,
6061+
&events::MessageSendEvent::SendTxAddOutput { .. } => false,
6062+
&events::MessageSendEvent::SendTxRemoveInput { .. } => false,
6063+
&events::MessageSendEvent::SendTxRemoveOutput { .. } => false,
6064+
&events::MessageSendEvent::SendTxComplete { .. } => false,
6065+
&events::MessageSendEvent::SendTxSignatures { .. } => false,
6066+
&events::MessageSendEvent::SendTxInitRbf { .. } => false,
6067+
&events::MessageSendEvent::SendTxAckRbf { .. } => false,
6068+
&events::MessageSendEvent::SendTxAbort { .. } => false,
6069+
// Channel Operations
60426070
&events::MessageSendEvent::UpdateHTLCs { .. } => false,
60436071
&events::MessageSendEvent::SendRevokeAndACK { .. } => false,
60446072
&events::MessageSendEvent::SendClosingSigned { .. } => false,
60456073
&events::MessageSendEvent::SendShutdown { .. } => false,
60466074
&events::MessageSendEvent::SendChannelReestablish { .. } => false,
6075+
&events::MessageSendEvent::HandleError { .. } => false,
6076+
// Gossip
60476077
&events::MessageSendEvent::SendChannelAnnouncement { .. } => false,
60486078
&events::MessageSendEvent::BroadcastChannelAnnouncement { .. } => true,
60496079
&events::MessageSendEvent::BroadcastChannelUpdate { .. } => true,
60506080
&events::MessageSendEvent::SendChannelUpdate { .. } => false,
6051-
&events::MessageSendEvent::HandleError { .. } => false,
60526081
&events::MessageSendEvent::SendChannelRangeQuery { .. } => false,
60536082
&events::MessageSendEvent::SendShortIdsQuery { .. } => false,
60546083
&events::MessageSendEvent::SendReplyChannelRange { .. } => false,
@@ -6179,6 +6208,60 @@ where
61796208
fn provided_init_features(&self, _their_init_features: &PublicKey) -> InitFeatures {
61806209
provided_init_features()
61816210
}
6211+
6212+
fn handle_tx_add_input(&self, counterparty_node_id: &PublicKey, msg: &msgs::TxAddInput) {
6213+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
6214+
"Dual-funded channels not supported".to_owned(),
6215+
msg.channel_id.clone())), *counterparty_node_id);
6216+
}
6217+
6218+
fn handle_tx_add_output(&self, counterparty_node_id: &PublicKey, msg: &msgs::TxAddOutput) {
6219+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
6220+
"Dual-funded channels not supported".to_owned(),
6221+
msg.channel_id.clone())), *counterparty_node_id);
6222+
}
6223+
6224+
fn handle_tx_remove_input(&self, counterparty_node_id: &PublicKey, msg: &msgs::TxRemoveInput) {
6225+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
6226+
"Dual-funded channels not supported".to_owned(),
6227+
msg.channel_id.clone())), *counterparty_node_id);
6228+
}
6229+
6230+
fn handle_tx_remove_output(&self, counterparty_node_id: &PublicKey, msg: &msgs::TxRemoveOutput) {
6231+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
6232+
"Dual-funded channels not supported".to_owned(),
6233+
msg.channel_id.clone())), *counterparty_node_id);
6234+
}
6235+
6236+
fn handle_tx_complete(&self, counterparty_node_id: &PublicKey, msg: &msgs::TxComplete) {
6237+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
6238+
"Dual-funded channels not supported".to_owned(),
6239+
msg.channel_id.clone())), *counterparty_node_id);
6240+
}
6241+
6242+
fn handle_tx_signatures(&self, counterparty_node_id: &PublicKey, msg: &msgs::TxSignatures) {
6243+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
6244+
"Dual-funded channels not supported".to_owned(),
6245+
msg.channel_id.clone())), *counterparty_node_id);
6246+
}
6247+
6248+
fn handle_tx_init_rbf(&self, counterparty_node_id: &PublicKey, msg: &msgs::TxInitRbf) {
6249+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
6250+
"Dual-funded channels not supported".to_owned(),
6251+
msg.channel_id.clone())), *counterparty_node_id);
6252+
}
6253+
6254+
fn handle_tx_ack_rbf(&self, counterparty_node_id: &PublicKey, msg: &msgs::TxAckRbf) {
6255+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
6256+
"Dual-funded channels not supported".to_owned(),
6257+
msg.channel_id.clone())), *counterparty_node_id);
6258+
}
6259+
6260+
fn handle_tx_abort(&self, counterparty_node_id: &PublicKey, msg: &msgs::TxAbort) {
6261+
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
6262+
"Dual-funded channels not supported".to_owned(),
6263+
msg.channel_id.clone())), *counterparty_node_id);
6264+
}
61826265
}
61836266

61846267
/// Fetches the set of [`NodeFeatures`] flags which are provided by or required by

lightning/src/ln/functional_test_utils.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,39 @@ pub fn remove_first_msg_event_to_node(msg_node_id: &PublicKey, msg_events: &Vec<
626626
MessageSendEvent::SendGossipTimestampFilter { node_id, .. } => {
627627
node_id == msg_node_id
628628
},
629+
MessageSendEvent::SendAcceptChannelV2 { node_id, .. } => {
630+
node_id == msg_node_id
631+
},
632+
MessageSendEvent::SendOpenChannelV2 { node_id, .. } => {
633+
node_id == msg_node_id
634+
},
635+
MessageSendEvent::SendTxAddInput { node_id, .. } => {
636+
node_id == msg_node_id
637+
},
638+
MessageSendEvent::SendTxAddOutput { node_id, .. } => {
639+
node_id == msg_node_id
640+
},
641+
MessageSendEvent::SendTxRemoveInput { node_id, .. } => {
642+
node_id == msg_node_id
643+
},
644+
MessageSendEvent::SendTxRemoveOutput { node_id, .. } => {
645+
node_id == msg_node_id
646+
},
647+
MessageSendEvent::SendTxComplete { node_id, .. } => {
648+
node_id == msg_node_id
649+
},
650+
MessageSendEvent::SendTxSignatures { node_id, .. } => {
651+
node_id == msg_node_id
652+
},
653+
MessageSendEvent::SendTxInitRbf { node_id, .. } => {
654+
node_id == msg_node_id
655+
},
656+
MessageSendEvent::SendTxAckRbf { node_id, .. } => {
657+
node_id == msg_node_id
658+
},
659+
MessageSendEvent::SendTxAbort { node_id, .. } => {
660+
node_id == msg_node_id
661+
},
629662
}});
630663
if ev_index.is_some() {
631664
let mut updated_msg_events = msg_events.to_vec();

lightning/src/ln/msgs.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,8 +1056,12 @@ pub trait ChannelMessageHandler : MessageSendEventsProvider {
10561056
//Channel init:
10571057
/// Handle an incoming open_channel message from the given peer.
10581058
fn handle_open_channel(&self, their_node_id: &PublicKey, their_features: InitFeatures, msg: &OpenChannel);
1059+
/// Handle an incoming open_channel2 message from the given peer.
1060+
fn handle_open_channel_v2(&self, their_node_id: &PublicKey, their_features: InitFeatures, msg: &OpenChannelV2);
10591061
/// Handle an incoming accept_channel message from the given peer.
10601062
fn handle_accept_channel(&self, their_node_id: &PublicKey, their_features: InitFeatures, msg: &AcceptChannel);
1063+
/// Handle an incoming accept_channel2 message from the given peer.
1064+
fn handle_accept_channel_v2(&self, their_node_id: &PublicKey, their_features: InitFeatures, msg: &AcceptChannelV2);
10611065
/// Handle an incoming funding_created message from the given peer.
10621066
fn handle_funding_created(&self, their_node_id: &PublicKey, msg: &FundingCreated);
10631067
/// Handle an incoming funding_signed message from the given peer.
@@ -1071,6 +1075,26 @@ pub trait ChannelMessageHandler : MessageSendEventsProvider {
10711075
/// Handle an incoming closing_signed message from the given peer.
10721076
fn handle_closing_signed(&self, their_node_id: &PublicKey, msg: &ClosingSigned);
10731077

1078+
// Interactive channel construction
1079+
/// Handle an incoming tx_add_input message from the given peer.
1080+
fn handle_tx_add_input(&self, their_node_id: &PublicKey, msg: &TxAddInput);
1081+
/// Handle an incoming tx_add_output message from the given peer.
1082+
fn handle_tx_add_output(&self, their_node_id: &PublicKey, msg: &TxAddOutput);
1083+
/// Handle an incoming tx_remove_input message from the given peer.
1084+
fn handle_tx_remove_input(&self, their_node_id: &PublicKey, msg: &TxRemoveInput);
1085+
/// Handle an incoming tx_remove_output message from the given peer.
1086+
fn handle_tx_remove_output(&self, their_node_id: &PublicKey, msg: &TxRemoveOutput);
1087+
/// Handle an incoming tx_complete message from the given peer.
1088+
fn handle_tx_complete(&self, their_node_id: &PublicKey, msg: &TxComplete);
1089+
/// Handle an incoming tx_signatures message from the given peer.
1090+
fn handle_tx_signatures(&self, their_node_id: &PublicKey, msg: &TxSignatures);
1091+
/// Handle an incoming tx_init_rbf message from the given peer.
1092+
fn handle_tx_init_rbf(&self, their_node_id: &PublicKey, msg: &TxInitRbf);
1093+
/// Handle an incoming tx_ack_rbf message from the given peer.
1094+
fn handle_tx_ack_rbf(&self, their_node_id: &PublicKey, msg: &TxAckRbf);
1095+
/// Handle an incoming tx_abort message from the given peer.
1096+
fn handle_tx_abort(&self, their_node_id: &PublicKey, msg: &TxAbort);
1097+
10741098
// HTLC handling:
10751099
/// Handle an incoming update_add_htlc message from the given peer.
10761100
fn handle_update_add_htlc(&self, their_node_id: &PublicKey, msg: &UpdateAddHTLC);

0 commit comments

Comments
 (0)