From df88525d44563e44201bbfd745ffc57614f14c30 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Mon, 15 Oct 2018 05:37:21 +0900 Subject: [PATCH] Ensure channel is live, not usable for sending fee updates + a freebie TODO removal --- src/ln/channel.rs | 4 +++- src/ln/channelmanager.rs | 5 ++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ln/channel.rs b/src/ln/channel.rs index 5c861b2e..1b7db97d 100644 --- a/src/ln/channel.rs +++ b/src/ln/channel.rs @@ -1960,10 +1960,12 @@ impl Channel { if !self.channel_outbound { panic!("Cannot send fee from inbound channel"); } - if !self.is_usable() { panic!("Cannot update fee until channel is fully established and we haven't started shutting down"); } + if !self.is_live() { + panic!("Cannot update fee while peer is disconnected (ChannelManager should have caught this)"); + } if (self.channel_state & (ChannelState::AwaitingRemoteRevoke as u32)) == (ChannelState::AwaitingRemoteRevoke as u32) { self.holding_cell_update_fee = Some(feerate_per_kw); diff --git a/src/ln/channelmanager.rs b/src/ln/channelmanager.rs index b967a677..d0df159e 100644 --- a/src/ln/channelmanager.rs +++ b/src/ln/channelmanager.rs @@ -1000,7 +1000,7 @@ impl ChannelManager { }; let msg_hash = Sha256dHash::from_data(&unsigned.encode()[..]); - let sig = self.secp_ctx.sign(&Message::from_slice(&msg_hash[..]).unwrap(), &self.our_network_key); //TODO Can we unwrap here? + let sig = self.secp_ctx.sign(&Message::from_slice(&msg_hash[..]).unwrap(), &self.our_network_key); Ok(msgs::ChannelUpdate { signature: sig, @@ -1105,7 +1105,6 @@ impl ChannelManager { /// May panic if the funding_txo is duplicative with some other channel (note that this should /// be trivially prevented by using unique funding transaction keys per-channel). pub fn funding_transaction_generated(&self, temporary_channel_id: &[u8; 32], funding_txo: OutPoint) { - macro_rules! add_pending_event { ($event: expr) => { { @@ -2001,7 +2000,7 @@ impl ChannelManager { match channel_state.by_id.get_mut(&channel_id) { None => return Err(APIError::APIMisuseError{err: "Failed to find corresponding channel"}), Some(chan) => { - if !chan.is_usable() { + if !chan.is_live() { return Err(APIError::APIMisuseError{err: "Channel is not in usuable state"}); } if !chan.is_outbound() { -- 2.30.2