@@ -2022,7 +2022,7 @@ impl<Signer: Sign> Channel<Signer> {
2022
2022
2023
2023
log_info ! ( logger, "Received funding_locked from peer for channel {}" , log_bytes!( self . channel_id( ) ) ) ;
2024
2024
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 ) )
2026
2026
}
2027
2027
2028
2028
/// Returns transaction if there is pending funding transaction that is yet to broadcast
@@ -3252,7 +3252,7 @@ impl<Signer: Sign> Channel<Signer> {
3252
3252
} )
3253
3253
} else { None } ;
3254
3254
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 ) ;
3256
3256
3257
3257
let mut accepted_htlcs = Vec :: new ( ) ;
3258
3258
mem:: swap ( & mut accepted_htlcs, & mut self . monitor_pending_forwards ) ;
@@ -3445,7 +3445,7 @@ impl<Signer: Sign> Channel<Signer> {
3445
3445
} )
3446
3446
} else { None } ;
3447
3447
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 ) ;
3449
3449
3450
3450
if self . channel_state & ( ChannelState :: FundingSent as u32 ) == ChannelState :: FundingSent as u32 {
3451
3451
// 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> {
4296
4296
// may have already happened for this block).
4297
4297
if let Some ( funding_locked) = self . check_get_funding_locked ( height) {
4298
4298
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 ) ;
4300
4300
return Ok ( ( Some ( funding_locked) , announcement_sigs) ) ;
4301
4301
}
4302
4302
}
@@ -4350,7 +4350,7 @@ impl<Signer: Sign> Channel<Signer> {
4350
4350
4351
4351
if let Some ( funding_locked) = self . check_get_funding_locked ( height) {
4352
4352
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 )
4354
4354
} else { None } ;
4355
4355
log_info ! ( logger, "Sending a funding_locked to our peer for channel {}" , log_bytes!( self . channel_id) ) ;
4356
4356
return Ok ( ( Some ( funding_locked) , timed_out_htlcs, announcement_sigs) ) ;
@@ -4386,7 +4386,7 @@ impl<Signer: Sign> Channel<Signer> {
4386
4386
}
4387
4387
4388
4388
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 )
4390
4390
} else { None } ;
4391
4391
Ok ( ( None , timed_out_htlcs, announcement_sigs) )
4392
4392
}
@@ -4591,29 +4591,43 @@ impl<Signer: Sign> Channel<Signer> {
4591
4591
Ok ( msg)
4592
4592
}
4593
4593
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 {
4595
4596
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 ;
4597
4598
}
4598
4599
4599
4600
if !self . is_usable ( ) {
4600
- return Err ( ChannelError :: Ignore ( "Channel not yet available for use" . to_owned ( ) ) ) ;
4601
+ return None ;
4601
4602
}
4602
4603
4603
4604
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 ;
4605
4607
}
4606
4608
4607
4609
if self . announcement_sigs_state != AnnouncementSigsState :: NotSent {
4608
- return Err ( ChannelError :: Ignore ( "Announcement signatures already sent" . to_owned ( ) ) ) ;
4610
+ return None ;
4609
4611
}
4610
4612
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
+ } ;
4614
4628
self . announcement_sigs_state = AnnouncementSigsState :: MessageSent ;
4615
4629
4616
- Ok ( msgs:: AnnouncementSignatures {
4630
+ Some ( msgs:: AnnouncementSignatures {
4617
4631
channel_id : self . channel_id ( ) ,
4618
4632
short_channel_id : self . get_short_channel_id ( ) . unwrap ( ) ,
4619
4633
node_signature : our_node_sig,
0 commit comments