Skip to content

Commit f78d729

Browse files
committed
Also fwd channel_update and node_announcement immediately
Not really sure why the API was different for channel_announcement, but this brings everything in sync.
1 parent faff5c2 commit f78d729

File tree

4 files changed

+18
-10
lines changed

4 files changed

+18
-10
lines changed

src/ln/msgs.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,11 +462,11 @@ pub trait ChannelMessageHandler : events::EventsProvider + Send + Sync {
462462
}
463463

464464
pub trait RoutingMessageHandler : Send + Sync {
465-
fn handle_node_announcement(&self, msg: &NodeAnnouncement) -> Result<(), HandleError>;
465+
fn handle_node_announcement(&self, msg: &NodeAnnouncement) -> Result<bool, HandleError>;
466466
/// Handle a channel_announcement message, returning true if it should be forwarded on, false
467467
/// or returning an Err otherwise.
468468
fn handle_channel_announcement(&self, msg: &ChannelAnnouncement) -> Result<bool, HandleError>;
469-
fn handle_channel_update(&self, msg: &ChannelUpdate) -> Result<(), HandleError>;
469+
fn handle_channel_update(&self, msg: &ChannelUpdate) -> Result<bool, HandleError>;
470470
fn handle_htlc_fail_channel_update(&self, update: &HTLCFailChannelUpdate);
471471
}
472472

src/ln/peer_handler.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -579,11 +579,19 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
579579
},
580580
257 => {
581581
let msg = try_potential_decodeerror!(msgs::NodeAnnouncement::decode(&msg_data[2..]));
582-
try_potential_handleerror!(self.message_handler.route_handler.handle_node_announcement(&msg));
582+
let should_forward = try_potential_handleerror!(self.message_handler.route_handler.handle_node_announcement(&msg));
583+
584+
if should_forward {
585+
// TODO: forward msg along to all our other peers!
586+
}
583587
},
584588
258 => {
585589
let msg = try_potential_decodeerror!(msgs::ChannelUpdate::decode(&msg_data[2..]));
586-
try_potential_handleerror!(self.message_handler.route_handler.handle_channel_update(&msg));
590+
let should_forward = try_potential_handleerror!(self.message_handler.route_handler.handle_channel_update(&msg));
591+
592+
if should_forward {
593+
// TODO: forward msg along to all our other peers!
594+
}
587595
},
588596
_ => {
589597
if (msg_type & 1) == 0 {

src/ln/router.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ macro_rules! secp_verify_sig {
168168
}
169169

170170
impl RoutingMessageHandler for Router {
171-
fn handle_node_announcement(&self, msg: &msgs::NodeAnnouncement) -> Result<(), HandleError> {
171+
fn handle_node_announcement(&self, msg: &msgs::NodeAnnouncement) -> Result<bool, HandleError> {
172172
let msg_hash = Message::from_slice(&Sha256dHash::from_data(&msg.contents.encode()[..])[..]).unwrap();
173173
secp_verify_sig!(self.secp_ctx, &msg_hash, &msg.signature, &msg.contents.node_id);
174174

@@ -189,7 +189,7 @@ impl RoutingMessageHandler for Router {
189189
node.rgb = msg.contents.rgb;
190190
node.alias = msg.contents.alias;
191191
node.addresses = msg.contents.addresses.clone();
192-
Ok(())
192+
Ok(msg.contents.excess_data.is_empty() && msg.contents.excess_address_data.is_empty() && !msg.contents.features.supports_unknown_bits())
193193
}
194194
}
195195
}
@@ -289,7 +289,7 @@ impl RoutingMessageHandler for Router {
289289
}
290290
}
291291

292-
fn handle_channel_update(&self, msg: &msgs::ChannelUpdate) -> Result<(), HandleError> {
292+
fn handle_channel_update(&self, msg: &msgs::ChannelUpdate) -> Result<bool, HandleError> {
293293
let mut network = self.network_map.write().unwrap();
294294
let dest_node_id;
295295
let chan_enabled = msg.contents.flags & (1 << 1) != (1 << 1);
@@ -355,7 +355,7 @@ impl RoutingMessageHandler for Router {
355355
mut_node.lowest_inbound_channel_fee_proportional_millionths = lowest_inbound_channel_fee_proportional_millionths;
356356
}
357357

358-
Ok(())
358+
Ok(msg.contents.excess_data.is_empty())
359359
}
360360
}
361361

src/util/test_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,13 @@ impl TestRoutingMessageHandler {
136136
}
137137

138138
impl msgs::RoutingMessageHandler for TestRoutingMessageHandler {
139-
fn handle_node_announcement(&self, _msg: &msgs::NodeAnnouncement) -> Result<(), HandleError> {
139+
fn handle_node_announcement(&self, _msg: &msgs::NodeAnnouncement) -> Result<bool, HandleError> {
140140
Err(HandleError { err: "", action: None })
141141
}
142142
fn handle_channel_announcement(&self, _msg: &msgs::ChannelAnnouncement) -> Result<bool, HandleError> {
143143
Err(HandleError { err: "", action: None })
144144
}
145-
fn handle_channel_update(&self, _msg: &msgs::ChannelUpdate) -> Result<(), HandleError> {
145+
fn handle_channel_update(&self, _msg: &msgs::ChannelUpdate) -> Result<bool, HandleError> {
146146
Err(HandleError { err: "", action: None })
147147
}
148148
fn handle_htlc_fail_channel_update(&self, _update: &msgs::HTLCFailChannelUpdate) {}

0 commit comments

Comments
 (0)