X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fchannelmanager.rs;h=40ea3e7849eb6ee0291b7793863c6e5687e7be48;hb=d7ff37edb4fc52023d7e96b725fa586d2f64e179;hp=971b4bc22ac2964657ee0d3eda26c41f538e80ce;hpb=3c0a9a95d9f1a73c04fb739c12c6e6335747e75d;p=rust-lightning diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs index 971b4bc2..40ea3e78 100644 --- a/lightning/src/ln/channelmanager.rs +++ b/lightning/src/ln/channelmanager.rs @@ -1261,9 +1261,15 @@ impl ChannelMana let channel_state = &mut *channel_state_lock; match channel_state.by_id.entry(channel_id.clone()) { hash_map::Entry::Occupied(mut chan_entry) => { - let (shutdown_msg, monitor_update, failed_htlcs) = chan_entry.get_mut().get_shutdown(&self.keys_manager)?; + let counterparty_node_id = chan_entry.get().get_counterparty_node_id(); + let their_features = { + let per_peer_state = self.per_peer_state.read().unwrap(); + let peer_state = per_peer_state.get(&counterparty_node_id).unwrap().lock().unwrap(); + peer_state.latest_features.clone() + }; + let (shutdown_msg, monitor_update, failed_htlcs) = chan_entry.get_mut().get_shutdown(&self.keys_manager, &their_features)?; channel_state.pending_msg_events.push(events::MessageSendEvent::SendShutdown { - node_id: chan_entry.get().get_counterparty_node_id(), + node_id: counterparty_node_id, msg: shutdown_msg }); if let Some(monitor_update) = monitor_update {