mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-24 23:08:36 +01:00
Merge pull request #1283 from TheBlueMatt/2022-01-correct-req-feature-handling
Correct handling of `UnknownRequiredFeature` deserialization
This commit is contained in:
commit
dfc93b4341
1 changed files with 10 additions and 1 deletions
|
@ -902,7 +902,11 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, CMH: Deref> P
|
||||||
Ok(x) => x,
|
Ok(x) => x,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
match e {
|
match e {
|
||||||
(msgs::DecodeError::UnknownRequiredFeature, _) => {
|
// Note that to avoid recursion we never call
|
||||||
|
// `do_attempt_write_data` from here, causing
|
||||||
|
// the messages enqueued here to not actually
|
||||||
|
// be sent before the peer is disconnected.
|
||||||
|
(msgs::DecodeError::UnknownRequiredFeature, Some(ty)) if is_gossip_msg(ty) => {
|
||||||
log_gossip!(self.logger, "Got a channel/node announcement with an unknown required feature flag, you may want to update!");
|
log_gossip!(self.logger, "Got a channel/node announcement with an unknown required feature flag, you may want to update!");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -916,6 +920,11 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, CMH: Deref> P
|
||||||
self.enqueue_message(peer, &msgs::WarningMessage { channel_id: [0; 32], data: "Unreadable/bogus gossip message".to_owned() });
|
self.enqueue_message(peer, &msgs::WarningMessage { channel_id: [0; 32], data: "Unreadable/bogus gossip message".to_owned() });
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
(msgs::DecodeError::UnknownRequiredFeature, ty) => {
|
||||||
|
log_gossip!(self.logger, "Received a message with an unknown required feature flag or TLV, you may want to update!");
|
||||||
|
self.enqueue_message(peer, &msgs::WarningMessage { channel_id: [0; 32], data: format!("Received an unknown required feature/TLV in message type {:?}", ty) });
|
||||||
|
return Err(PeerHandleError { no_connection_possible: false });
|
||||||
|
}
|
||||||
(msgs::DecodeError::UnknownVersion, _) => return Err(PeerHandleError { no_connection_possible: false }),
|
(msgs::DecodeError::UnknownVersion, _) => return Err(PeerHandleError { no_connection_possible: false }),
|
||||||
(msgs::DecodeError::InvalidValue, _) => {
|
(msgs::DecodeError::InvalidValue, _) => {
|
||||||
log_debug!(self.logger, "Got an invalid value while deserializing message");
|
log_debug!(self.logger, "Got an invalid value while deserializing message");
|
||||||
|
|
Loading…
Add table
Reference in a new issue