Skip to content

Commit 19addfd

Browse files
committed
do not drop PeerManager::message_handler in PeerManager destructor
1 parent 564aa91 commit 19addfd

File tree

3 files changed

+6
-14
lines changed

3 files changed

+6
-14
lines changed

bindings/src/adaptors/mod.rs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ pub mod routing_msg_descriptor_fn {
410410
/// Return type is binary serialized `Vec<NodeAnnouncement>` .
411411
pub type GetNextNodeAnnouncements = extern "cdecl" fn (starting_point: Option<*const Bytes33>, batch_amount: u8) -> FFIBytes;
412412
/// Returns whether a full sync should be requested from a peer.
413-
pub type ShouldRequestFullSync = extern "cdecl" fn (node_id: NonNull<Bytes33>) -> Bool;
413+
pub type ShouldRequestFullSync = extern "cdecl" fn (node_id: Bytes33) -> Bool;
414414
}
415415

416416
pub struct FFIRoutingMsgHandler {
@@ -437,17 +437,7 @@ impl Writer for VecWriter {
437437

438438
impl RoutingMessageHandler for FFIRoutingMsgHandler {
439439
fn handle_node_announcement(&self, msg: &NodeAnnouncement) -> Result<bool, LightningError> {
440-
let mut w = VecWriter(Vec::new());
441-
msg.write(&mut w);
442-
let bytes = FFIBytes::from(w.0.into_boxed_slice());
443-
let e = std::ptr::null_mut();
444-
let is_success = (self.handle_node_announcement_ptr)(&bytes as *const _, e);
445-
if e.is_null() {
446-
Ok(is_success.to_bool())
447-
} else {
448-
let e = unsafe_block!("we know the error is not a null pointer" => (*e).clone());
449-
Err(e.into())
450-
}
440+
unimplemented!()
451441
}
452442

453443
fn handle_channel_announcement(&self, msg: &ChannelAnnouncement) -> Result<bool, LightningError> {

bindings/src/peermanager.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,9 @@ ffi! {
188188

189189
fn release_peer_manager(handle: FFIArcPeerManagerHandle) -> FFIResult {
190190
unsafe_block!("The upstream caller guarantees the handle will not be accessed after being freed" => FFIArcPeerManagerHandle::dealloc(handle, |mut handle| {
191+
// dropping message handler is not or job.
192+
std::mem::forget(handle.message_handler);
191193
FFIResult::ok()
192194
}))
193195
}
194-
195196
}

lightning/src/ln/peer_handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,8 @@ pub type SimpleRefPeerManager<'a, 'b, 'c, 'd, 'e, SD, M, T, F, L> = PeerManager<
190190
/// SimpleArcPeerManager when you require a PeerManager with a static lifetime, such as when
191191
/// you're using lightning-net-tokio.
192192
pub struct PeerManager<Descriptor: SocketDescriptor, CM: Deref, L: Deref> where CM::Target: msgs::ChannelMessageHandler, L::Target: Logger {
193-
message_handler: MessageHandler<CM>,
193+
/// Message handler
194+
pub message_handler: MessageHandler<CM>,
194195
peers: Mutex<PeerHolder<Descriptor>>,
195196
our_node_secret: SecretKey,
196197
ephemeral_key_midstate: Sha256Engine,

0 commit comments

Comments
 (0)