Skip to content

Commit c4b22c3

Browse files
committed
Make Channel::get_announcement_sigs return an Option and log
Channel::get_announcement_sigs is only used in contexts where we have a logger already, and the error returned is always ignored, so instead of returning an ignored error message we return an `Option` directly and log when it won't be too verbose.
1 parent 38dc4d2 commit c4b22c3

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

lightning/src/ln/channel.rs

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2022,7 +2022,7 @@ impl<Signer: Sign> Channel<Signer> {
20222022

20232023
log_info!(logger, "Received funding_locked from peer for channel {}", log_bytes!(self.channel_id()));
20242024

2025-
Ok(self.get_announcement_sigs(node_pk, genesis_block_hash, best_block.height()).ok())
2025+
Ok(self.get_announcement_sigs(node_pk, genesis_block_hash, best_block.height(), logger))
20262026
}
20272027

20282028
/// Returns transaction if there is pending funding transaction that is yet to broadcast
@@ -3252,7 +3252,7 @@ impl<Signer: Sign> Channel<Signer> {
32523252
})
32533253
} else { None };
32543254

3255-
let announcement_sigs = self.get_announcement_sigs(node_pk, genesis_block_hash, best_block_height).ok();
3255+
let announcement_sigs = self.get_announcement_sigs(node_pk, genesis_block_hash, best_block_height, logger);
32563256

32573257
let mut accepted_htlcs = Vec::new();
32583258
mem::swap(&mut accepted_htlcs, &mut self.monitor_pending_forwards);
@@ -3445,7 +3445,7 @@ impl<Signer: Sign> Channel<Signer> {
34453445
})
34463446
} else { None };
34473447

3448-
let announcement_sigs = self.get_announcement_sigs(node_pk, genesis_block_hash, best_block.height()).ok();
3448+
let announcement_sigs = self.get_announcement_sigs(node_pk, genesis_block_hash, best_block.height(), logger);
34493449

34503450
if self.channel_state & (ChannelState::FundingSent as u32) == ChannelState::FundingSent as u32 {
34513451
// If we're waiting on a monitor update, we shouldn't re-send any funding_locked's.
@@ -4296,7 +4296,7 @@ impl<Signer: Sign> Channel<Signer> {
42964296
// may have already happened for this block).
42974297
if let Some(funding_locked) = self.check_get_funding_locked(height) {
42984298
log_info!(logger, "Sending a funding_locked to our peer for channel {}", log_bytes!(self.channel_id));
4299-
let announcement_sigs = self.get_announcement_sigs(node_pk, genesis_block_hash, height).ok();
4299+
let announcement_sigs = self.get_announcement_sigs(node_pk, genesis_block_hash, height, logger);
43004300
return Ok((Some(funding_locked), announcement_sigs));
43014301
}
43024302
}
@@ -4350,7 +4350,7 @@ impl<Signer: Sign> Channel<Signer> {
43504350

43514351
if let Some(funding_locked) = self.check_get_funding_locked(height) {
43524352
let announcement_sigs = if let Some((genesis_block_hash, node_pk)) = genesis_node_pk {
4353-
self.get_announcement_sigs(node_pk, genesis_block_hash, height).ok()
4353+
self.get_announcement_sigs(node_pk, genesis_block_hash, height, logger)
43544354
} else { None };
43554355
log_info!(logger, "Sending a funding_locked to our peer for channel {}", log_bytes!(self.channel_id));
43564356
return Ok((Some(funding_locked), timed_out_htlcs, announcement_sigs));
@@ -4386,7 +4386,7 @@ impl<Signer: Sign> Channel<Signer> {
43864386
}
43874387

43884388
let announcement_sigs = if let Some((genesis_block_hash, node_pk)) = genesis_node_pk {
4389-
self.get_announcement_sigs(node_pk, genesis_block_hash, height).ok()
4389+
self.get_announcement_sigs(node_pk, genesis_block_hash, height, logger)
43904390
} else { None };
43914391
Ok((None, timed_out_htlcs, announcement_sigs))
43924392
}
@@ -4591,29 +4591,43 @@ impl<Signer: Sign> Channel<Signer> {
45914591
Ok(msg)
45924592
}
45934593

4594-
fn get_announcement_sigs(&mut self, node_pk: PublicKey, genesis_block_hash: BlockHash, best_block_height: u32) -> Result<msgs::AnnouncementSignatures, ChannelError> {
4594+
fn get_announcement_sigs<L: Deref>(&mut self, node_pk: PublicKey, genesis_block_hash: BlockHash, best_block_height: u32, logger: &L)
4595+
-> Option<msgs::AnnouncementSignatures> where L::Target: Logger {
45954596
if self.funding_tx_confirmation_height == 0 || self.funding_tx_confirmation_height + 5 > best_block_height {
4596-
return Err(ChannelError::Ignore("Funding not yet fully confirmed".to_owned()));
4597+
return None;
45974598
}
45984599

45994600
if !self.is_usable() {
4600-
return Err(ChannelError::Ignore("Channel not yet available for use".to_owned()));
4601+
return None;
46014602
}
46024603

46034604
if self.channel_state & ChannelState::PeerDisconnected as u32 != 0 {
4604-
return Err(ChannelError::Ignore("Peer currently disconnected".to_owned()));
4605+
log_trace!(logger, "Cannot create an announcement_signatures as our peer is disconnected");
4606+
return None;
46054607
}
46064608

46074609
if self.announcement_sigs_state != AnnouncementSigsState::NotSent {
4608-
return Err(ChannelError::Ignore("Announcement signatures already sent".to_owned()));
4610+
return None;
46094611
}
46104612

4611-
let announcement = self.get_channel_announcement(node_pk, genesis_block_hash)?;
4612-
let (our_node_sig, our_bitcoin_sig) = self.holder_signer.sign_channel_announcement(&announcement, &self.secp_ctx)
4613-
.map_err(|_| ChannelError::Ignore("Signer rejected channel_announcement".to_owned()))?;
4613+
log_trace!(logger, "Creating an announcement_signatures message for channel {}", log_bytes!(self.channel_id()));
4614+
let announcement = match self.get_channel_announcement(node_pk, genesis_block_hash) {
4615+
Ok(a) => a,
4616+
Err(_) => {
4617+
log_trace!(logger, "Cannot create an announcement_signatures as channel is not public.");
4618+
return None;
4619+
}
4620+
};
4621+
let (our_node_sig, our_bitcoin_sig) = match self.holder_signer.sign_channel_announcement(&announcement, &self.secp_ctx) {
4622+
Err(_) => {
4623+
log_error!(logger, "Signer rejected channel_announcement signing. Channel will not be announced!");
4624+
return None;
4625+
},
4626+
Ok(v) => v
4627+
};
46144628
self.announcement_sigs_state = AnnouncementSigsState::MessageSent;
46154629

4616-
Ok(msgs::AnnouncementSignatures {
4630+
Some(msgs::AnnouncementSignatures {
46174631
channel_id: self.channel_id(),
46184632
short_channel_id: self.get_short_channel_id().unwrap(),
46194633
node_signature: our_node_sig,

0 commit comments

Comments
 (0)