Skip to content

Commit 8a0dd68

Browse files
committed
fixup: Handle PeerStorageRetrieval in ChannelManager
1 parent 34e97f7 commit 8a0dd68

File tree

1 file changed

+16
-23
lines changed

1 file changed

+16
-23
lines changed

lightning/src/ln/channelmanager.rs

+16-23
Original file line numberDiff line numberDiff line change
@@ -8327,33 +8327,26 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
83278327
// TODO: Check if have any stale or missing ChannelMonitor.
83288328
let logger = WithContext::from(&self.logger, Some(counterparty_node_id), None, None);
83298329

8330-
// `MIN_CYPHERTEXT_LEN` is 16 bytes because the mandatory authentication tag length is 16 bytes.
8331-
const MIN_CYPHERTEXT_LEN: usize = 16;
8332-
8333-
if msg.data.len() < MIN_CYPHERTEXT_LEN {
8334-
log_debug!(logger, "Invalid YourPeerStorage received from {}", log_pubkey!(counterparty_node_id));
8335-
return Err(MsgHandleErrInternal::from_chan_no_close(ChannelError::Warn(
8336-
"Invalid peer_storage_retrieval message received.".into(),
8337-
), ChannelId([0; 32])));
8338-
}
8339-
83408330
let our_peerstorage_encryption_key = self.node_signer.get_peer_storage_key();
8341-
let our_peer_storage = OurPeerStorage::new(msg.data).unwrap();
83428331

8343-
match our_peer_storage.decrypt_our_peer_storage(our_peerstorage_encryption_key) {
8344-
Ok(decrypted_data) => {
8345-
// Decryption successful.
8346-
if decrypted_data.len() == 0 {
8347-
log_trace!(logger, "Received a peer storage from peer {} with 0 channels.", log_pubkey!(counterparty_node_id));
8348-
}
8349-
}
8332+
let decrypted_data = match OurPeerStorage::new(msg.data)
8333+
.and_then(|storage| storage.decrypt_our_peer_storage(our_peerstorage_encryption_key)) {
8334+
Ok(data) => data,
83508335
Err(_) => {
8351-
log_debug!(logger, "Invalid YourPeerStorage received from {}", log_pubkey!(counterparty_node_id));
8352-
8353-
return Err(MsgHandleErrInternal::from_chan_no_close(ChannelError::Ignore(
8354-
"Invalid peer_storage_retrieval message received.".into(),
8355-
), ChannelId([0; 32])));
8336+
log_debug!(
8337+
logger,
8338+
"Invalid PeerStorage received from {}",
8339+
log_pubkey!(counterparty_node_id)
8340+
);
8341+
return Err(MsgHandleErrInternal::from_chan_no_close(
8342+
ChannelError::Ignore("Invalid PeerStorageRetrieval message received.".into()),
8343+
ChannelId([0; 32]),
8344+
));
83568345
}
8346+
};
8347+
8348+
if decrypted_data.is_empty() {
8349+
log_debug!(logger, "Received a peer storage from peer {} with 0 channels.", log_pubkey!(counterparty_node_id));
83578350
}
83588351

83598352
Ok(())

0 commit comments

Comments
 (0)