Skip to content

Commit 58affb5

Browse files
committed
fixup: Handle PeerStorageRetrieval in ChannelManager
1 parent 569caa4 commit 58affb5

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8346,19 +8346,24 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
83468346
// TODO: Check if have any stale or missing ChannelMonitor.
83478347
let logger = WithContext::from(&self.logger, Some(counterparty_node_id), None, None);
83488348

8349-
if msg.data.len() < 16 {
8349+
// `MIN_CYPHERTEXT_LEN` is 16 bytes because the mandatory authentication tag length is 16 bytes.
8350+
const MIN_CYPHERTEXT_LEN: usize = 16;
8351+
8352+
if msg.data.len() < MIN_CYPHERTEXT_LEN {
83508353
log_debug!(logger, "Invalid YourPeerStorage received from {}", log_pubkey!(counterparty_node_id));
83518354
return Err(MsgHandleErrInternal::from_chan_no_close(ChannelError::Warn(
83528355
"Invalid peer_storage_retrieval message received.".into(),
83538356
), ChannelId([0; 32])));
83548357
}
83558358

8356-
let mut res = vec![0; msg.data.len() - 16];
83578359
let our_peerstorage_encryption_key = self.node_signer.get_peer_storage_key();
83588360

8359-
match OurPeerStorage::decrypt_our_peer_storage(&mut res, &msg.data.clone(), our_peerstorage_encryption_key) {
8360-
Ok(()) => {
8361-
// Decryption successful, the plaintext is now stored in `res`.
8361+
match OurPeerStorage::decrypt_our_peer_storage(&msg.data, our_peerstorage_encryption_key) {
8362+
Ok(our_peer_storage) => {
8363+
// Decryption successful.
8364+
if our_peer_storage.get_ser_channels().len() == 0 {
8365+
log_trace!(logger, "Received a peer storage from peer {} with 0 channels.", log_pubkey!(counterparty_node_id));
8366+
}
83628367
}
83638368
Err(_) => {
83648369
log_debug!(logger, "Invalid YourPeerStorage received from {}", log_pubkey!(counterparty_node_id));
@@ -8368,11 +8373,6 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
83688373
), ChannelId([0; 32])));
83698374
}
83708375
}
8371-
let our_peer_storage = <OurPeerStorage as Readable>::read(&mut ::bitcoin::io::Cursor::new(res)).unwrap();
8372-
8373-
if our_peer_storage.get_ser_channels().len() == 0 {
8374-
log_debug!(logger, "Received a peer storage from peer {} with 0 channels.", log_pubkey!(counterparty_node_id));
8375-
}
83768376

83778377
Ok(())
83788378
}

0 commit comments

Comments
 (0)