mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 15:20:24 +01:00
Ensure channel is live, not usable for sending fee updates
+ a freebie TODO removal
This commit is contained in:
parent
b4299bcc9a
commit
df88525d44
2 changed files with 5 additions and 4 deletions
|
@ -1960,10 +1960,12 @@ impl Channel {
|
||||||
if !self.channel_outbound {
|
if !self.channel_outbound {
|
||||||
panic!("Cannot send fee from inbound channel");
|
panic!("Cannot send fee from inbound channel");
|
||||||
}
|
}
|
||||||
|
|
||||||
if !self.is_usable() {
|
if !self.is_usable() {
|
||||||
panic!("Cannot update fee until channel is fully established and we haven't started shutting down");
|
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) {
|
if (self.channel_state & (ChannelState::AwaitingRemoteRevoke as u32)) == (ChannelState::AwaitingRemoteRevoke as u32) {
|
||||||
self.holding_cell_update_fee = Some(feerate_per_kw);
|
self.holding_cell_update_fee = Some(feerate_per_kw);
|
||||||
|
|
|
@ -1000,7 +1000,7 @@ impl ChannelManager {
|
||||||
};
|
};
|
||||||
|
|
||||||
let msg_hash = Sha256dHash::from_data(&unsigned.encode()[..]);
|
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 {
|
Ok(msgs::ChannelUpdate {
|
||||||
signature: sig,
|
signature: sig,
|
||||||
|
@ -1105,7 +1105,6 @@ impl ChannelManager {
|
||||||
/// May panic if the funding_txo is duplicative with some other channel (note that this should
|
/// 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).
|
/// 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) {
|
pub fn funding_transaction_generated(&self, temporary_channel_id: &[u8; 32], funding_txo: OutPoint) {
|
||||||
|
|
||||||
macro_rules! add_pending_event {
|
macro_rules! add_pending_event {
|
||||||
($event: expr) => {
|
($event: expr) => {
|
||||||
{
|
{
|
||||||
|
@ -2001,7 +2000,7 @@ impl ChannelManager {
|
||||||
match channel_state.by_id.get_mut(&channel_id) {
|
match channel_state.by_id.get_mut(&channel_id) {
|
||||||
None => return Err(APIError::APIMisuseError{err: "Failed to find corresponding channel"}),
|
None => return Err(APIError::APIMisuseError{err: "Failed to find corresponding channel"}),
|
||||||
Some(chan) => {
|
Some(chan) => {
|
||||||
if !chan.is_usable() {
|
if !chan.is_live() {
|
||||||
return Err(APIError::APIMisuseError{err: "Channel is not in usuable state"});
|
return Err(APIError::APIMisuseError{err: "Channel is not in usuable state"});
|
||||||
}
|
}
|
||||||
if !chan.is_outbound() {
|
if !chan.is_outbound() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue