Skip to content

Commit 444740c

Browse files
authored
Merge pull request #2842 from jkczyz/2024-01-fix-peer-handler-unwrap
Fix panic when peer is mid-handshake
2 parents 6b0ba8c + 7b8d018 commit 444740c

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

lightning/src/ln/peer_handler.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -1272,7 +1272,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
12721272

12731273
/// Append a message to a peer's pending outbound/write buffer
12741274
fn enqueue_message<M: wire::Type>(&self, peer: &mut Peer, message: &M) {
1275-
let logger = WithContext::from(&self.logger, Some(peer.their_node_id.unwrap().0), None);
1275+
let logger = WithContext::from(&self.logger, peer.their_node_id.map(|p| p.0), None);
12761276
if is_gossip_msg(message.type_id()) {
12771277
log_gossip!(logger, "Enqueueing message {:?} to {}", message, log_pubkey!(peer.their_node_id.unwrap().0));
12781278
} else {
@@ -1377,7 +1377,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
13771377

13781378
macro_rules! insert_node_id {
13791379
() => {
1380-
let logger = WithContext::from(&self.logger, Some(peer.their_node_id.unwrap().0), None);
1380+
let logger = WithContext::from(&self.logger, peer.their_node_id.map(|p| p.0), None);
13811381
match self.node_id_to_descriptor.lock().unwrap().entry(peer.their_node_id.unwrap().0) {
13821382
hash_map::Entry::Occupied(e) => {
13831383
log_trace!(logger, "Got second connection with {}, closing", log_pubkey!(peer.their_node_id.unwrap().0));
@@ -1457,7 +1457,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
14571457
peer.pending_read_buffer.resize(18, 0);
14581458
peer.pending_read_is_header = true;
14591459

1460-
let logger = WithContext::from(&self.logger, Some(peer.their_node_id.unwrap().0), None);
1460+
let logger = WithContext::from(&self.logger, peer.their_node_id.map(|p| p.0), None);
14611461
let message = match message_result {
14621462
Ok(x) => x,
14631463
Err(e) => {
@@ -1835,13 +1835,13 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
18351835

18361836
for (_, peer_mutex) in peers.iter() {
18371837
let mut peer = peer_mutex.lock().unwrap();
1838-
let logger = WithContext::from(&self.logger, Some(peer.their_node_id.unwrap().0), None);
18391838
if !peer.handshake_complete() ||
18401839
!peer.should_forward_channel_announcement(msg.contents.short_channel_id) {
18411840
continue
18421841
}
18431842
debug_assert!(peer.their_node_id.is_some());
18441843
debug_assert!(peer.channel_encryptor.is_ready_for_encryption());
1844+
let logger = WithContext::from(&self.logger, peer.their_node_id.map(|p| p.0), None);
18451845
if peer.buffer_full_drop_gossip_broadcast() {
18461846
log_gossip!(logger, "Skipping broadcast message to {:?} as its outbound buffer is full", peer.their_node_id);
18471847
continue;
@@ -1863,13 +1863,13 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
18631863

18641864
for (_, peer_mutex) in peers.iter() {
18651865
let mut peer = peer_mutex.lock().unwrap();
1866-
let logger = WithContext::from(&self.logger, Some(peer.their_node_id.unwrap().0), None);
18671866
if !peer.handshake_complete() ||
18681867
!peer.should_forward_node_announcement(msg.contents.node_id) {
18691868
continue
18701869
}
18711870
debug_assert!(peer.their_node_id.is_some());
18721871
debug_assert!(peer.channel_encryptor.is_ready_for_encryption());
1872+
let logger = WithContext::from(&self.logger, peer.their_node_id.map(|p| p.0), None);
18731873
if peer.buffer_full_drop_gossip_broadcast() {
18741874
log_gossip!(logger, "Skipping broadcast message to {:?} as its outbound buffer is full", peer.their_node_id);
18751875
continue;
@@ -1891,13 +1891,13 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
18911891

18921892
for (_, peer_mutex) in peers.iter() {
18931893
let mut peer = peer_mutex.lock().unwrap();
1894-
let logger = WithContext::from(&self.logger, Some(peer.their_node_id.unwrap().0), None);
18951894
if !peer.handshake_complete() ||
18961895
!peer.should_forward_channel_announcement(msg.contents.short_channel_id) {
18971896
continue
18981897
}
18991898
debug_assert!(peer.their_node_id.is_some());
19001899
debug_assert!(peer.channel_encryptor.is_ready_for_encryption());
1900+
let logger = WithContext::from(&self.logger, peer.their_node_id.map(|p| p.0), None);
19011901
if peer.buffer_full_drop_gossip_broadcast() {
19021902
log_gossip!(logger, "Skipping broadcast message to {:?} as its outbound buffer is full", peer.their_node_id);
19031903
continue;

0 commit comments

Comments
 (0)