diff --git a/lightning/src/ln/offers_tests.rs b/lightning/src/ln/offers_tests.rs index 3b9317e4674..dd7ce4afb29 100644 --- a/lightning/src/ln/offers_tests.rs +++ b/lightning/src/ln/offers_tests.rs @@ -1100,6 +1100,7 @@ fn creates_and_pays_for_offer_with_retry() { expect_recent_payment!(bob, RecentPaymentDetails::AwaitingInvoice, payment_id); let _lost_onion_message = bob.onion_messenger.next_onion_message_for_peer(alice_id).unwrap(); + assert!(bob.onion_messenger.next_onion_message_for_peer(alice_id).is_none()); // Simulate a scenario where the original onion_message is lost before reaching Alice. // Use handle_message_received to regenerate the message. diff --git a/lightning/src/ln/peer_handler.rs b/lightning/src/ln/peer_handler.rs index 3c0d724ad94..6f0412ced42 100644 --- a/lightning/src/ln/peer_handler.rs +++ b/lightning/src/ln/peer_handler.rs @@ -1618,14 +1618,15 @@ impl processed_message, - None => return Ok(None), - }; - self.do_handle_message_without_peer_lock(peer_mutex, message, their_node_id, &logger) + if let Some(message) = unprocessed_message { + self.do_handle_message_without_peer_lock(peer_mutex, message, their_node_id, &logger) + } else { + Ok(None) + } } // Conducts all message processing that requires us to hold the `peer_lock`.