@@ -1762,8 +1762,9 @@ impl ChannelManager {
1762
1762
Ok ( ( ) )
1763
1763
}
1764
1764
1765
- fn internal_funding_locked ( & self , their_node_id : & PublicKey , msg : & msgs:: FundingLocked ) -> Result < Option < msgs:: AnnouncementSignatures > , MsgHandleErrInternal > {
1766
- let mut channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
1765
+ fn internal_funding_locked ( & self , their_node_id : & PublicKey , msg : & msgs:: FundingLocked ) -> Result < ( ) , MsgHandleErrInternal > {
1766
+ let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
1767
+ let channel_state = channel_state_lock. borrow_parts ( ) ;
1767
1768
match channel_state. by_id . get_mut ( & msg. channel_id ) {
1768
1769
Some ( chan) => {
1769
1770
if chan. get_their_node_id ( ) != * their_node_id {
@@ -1772,10 +1773,16 @@ impl ChannelManager {
1772
1773
}
1773
1774
chan. funding_locked ( & msg)
1774
1775
. map_err ( |e| MsgHandleErrInternal :: from_chan_maybe_close ( e, msg. channel_id ) ) ?;
1775
- return Ok ( self . get_announcement_sigs ( chan) ) ;
1776
+ if let Some ( announcement_sigs) = self . get_announcement_sigs ( chan) {
1777
+ channel_state. pending_msg_events . push ( events:: MessageSendEvent :: SendAnnouncementSignatures {
1778
+ node_id : their_node_id. clone ( ) ,
1779
+ msg : announcement_sigs,
1780
+ } ) ;
1781
+ }
1782
+ Ok ( ( ) )
1776
1783
} ,
1777
- None => return Err ( MsgHandleErrInternal :: send_err_msg_no_close ( "Failed to find corresponding channel" , msg. channel_id ) )
1778
- } ;
1784
+ None => Err ( MsgHandleErrInternal :: send_err_msg_no_close ( "Failed to find corresponding channel" , msg. channel_id ) )
1785
+ }
1779
1786
}
1780
1787
1781
1788
fn internal_shutdown ( & self , their_node_id : & PublicKey , msg : & msgs:: Shutdown ) -> Result < ( Option < msgs:: Shutdown > , Option < msgs:: ClosingSigned > ) , MsgHandleErrInternal > {
@@ -2363,12 +2370,16 @@ impl ChainListener for ChannelManager {
2363
2370
channel_state. by_id . retain ( |_, channel| {
2364
2371
let chan_res = channel. block_connected ( header, height, txn_matched, indexes_of_txn_matched) ;
2365
2372
if let Ok ( Some ( funding_locked) ) = chan_res {
2366
- let announcement_sigs = self . get_announcement_sigs ( channel) ;
2367
2373
pending_msg_events. push ( events:: MessageSendEvent :: SendFundingLocked {
2368
2374
node_id : channel. get_their_node_id ( ) ,
2369
2375
msg : funding_locked,
2370
- announcement_sigs : announcement_sigs
2371
2376
} ) ;
2377
+ if let Some ( announcement_sigs) = self . get_announcement_sigs ( channel) {
2378
+ pending_msg_events. push ( events:: MessageSendEvent :: SendAnnouncementSignatures {
2379
+ node_id : channel. get_their_node_id ( ) ,
2380
+ msg : announcement_sigs,
2381
+ } ) ;
2382
+ }
2372
2383
short_to_id. insert ( channel. get_short_channel_id ( ) . unwrap ( ) , channel. channel_id ( ) ) ;
2373
2384
} else if let Err ( e) = chan_res {
2374
2385
pending_msg_events. push ( events:: MessageSendEvent :: HandleError {
@@ -2507,7 +2518,7 @@ impl ChannelMessageHandler for ChannelManager {
2507
2518
handle_error ! ( self , self . internal_funding_signed( their_node_id, msg) , their_node_id)
2508
2519
}
2509
2520
2510
- fn handle_funding_locked ( & self , their_node_id : & PublicKey , msg : & msgs:: FundingLocked ) -> Result < Option < msgs :: AnnouncementSignatures > , HandleError > {
2521
+ fn handle_funding_locked ( & self , their_node_id : & PublicKey , msg : & msgs:: FundingLocked ) -> Result < ( ) , HandleError > {
2511
2522
handle_error ! ( self , self . internal_funding_locked( their_node_id, msg) , their_node_id)
2512
2523
}
2513
2524
@@ -2954,30 +2965,27 @@ mod tests {
2954
2965
2955
2966
fn create_chan_between_nodes_with_value_confirm ( node_a : & Node , node_b : & Node , tx : & Transaction ) -> ( ( msgs:: FundingLocked , msgs:: AnnouncementSignatures ) , [ u8 ; 32 ] ) {
2956
2967
confirm_transaction ( & node_b. chain_monitor , & tx, tx. version ) ;
2957
- let events_5 = node_b. node . get_and_clear_pending_msg_events ( ) ;
2958
- assert_eq ! ( events_5. len( ) , 1 ) ;
2959
- match events_5[ 0 ] {
2960
- MessageSendEvent :: SendFundingLocked { ref node_id, ref msg, ref announcement_sigs } => {
2961
- assert_eq ! ( * node_id, node_a. node. get_our_node_id( ) ) ;
2962
- assert ! ( announcement_sigs. is_none( ) ) ;
2963
- node_a. node . handle_funding_locked ( & node_b. node . get_our_node_id ( ) , msg) . unwrap ( )
2964
- } ,
2965
- _ => panic ! ( "Unexpected event" ) ,
2966
- } ;
2968
+ node_a. node . handle_funding_locked ( & node_b. node . get_our_node_id ( ) , & get_event_msg ! ( node_b, MessageSendEvent :: SendFundingLocked , node_a. node. get_our_node_id( ) ) ) . unwrap ( ) ;
2967
2969
2968
2970
let channel_id;
2969
2971
2970
2972
confirm_transaction ( & node_a. chain_monitor , & tx, tx. version ) ;
2971
2973
let events_6 = node_a. node . get_and_clear_pending_msg_events ( ) ;
2972
- assert_eq ! ( events_6. len( ) , 1 ) ;
2973
- ( match events_6[ 0 ] {
2974
- MessageSendEvent :: SendFundingLocked { ref node_id, ref msg, ref announcement_sigs } => {
2974
+ assert_eq ! ( events_6. len( ) , 2 ) ;
2975
+ ( ( match events_6[ 0 ] {
2976
+ MessageSendEvent :: SendFundingLocked { ref node_id, ref msg } => {
2975
2977
channel_id = msg. channel_id . clone ( ) ;
2976
2978
assert_eq ! ( * node_id, node_b. node. get_our_node_id( ) ) ;
2977
- ( msg. clone ( ) , announcement_sigs. clone ( ) . unwrap ( ) )
2979
+ msg. clone ( )
2980
+ } ,
2981
+ _ => panic ! ( "Unexpected event" ) ,
2982
+ } , match events_6[ 1 ] {
2983
+ MessageSendEvent :: SendAnnouncementSignatures { ref node_id, ref msg } => {
2984
+ assert_eq ! ( * node_id, node_b. node. get_our_node_id( ) ) ;
2985
+ msg. clone ( )
2978
2986
} ,
2979
2987
_ => panic ! ( "Unexpected event" ) ,
2980
- } , channel_id)
2988
+ } ) , channel_id)
2981
2989
}
2982
2990
2983
2991
fn create_chan_between_nodes_with_value_a ( node_a : & Node , node_b : & Node , channel_value : u64 , push_msat : u64 ) -> ( ( msgs:: FundingLocked , msgs:: AnnouncementSignatures ) , [ u8 ; 32 ] , Transaction ) {
@@ -2987,11 +2995,9 @@ mod tests {
2987
2995
}
2988
2996
2989
2997
fn create_chan_between_nodes_with_value_b ( node_a : & Node , node_b : & Node , as_funding_msgs : & ( msgs:: FundingLocked , msgs:: AnnouncementSignatures ) ) -> ( msgs:: ChannelAnnouncement , msgs:: ChannelUpdate , msgs:: ChannelUpdate ) {
2990
- let bs_announcement_sigs = {
2991
- let bs_announcement_sigs = node_b. node . handle_funding_locked ( & node_a. node . get_our_node_id ( ) , & as_funding_msgs. 0 ) . unwrap ( ) . unwrap ( ) ;
2992
- node_b. node . handle_announcement_signatures ( & node_a. node . get_our_node_id ( ) , & as_funding_msgs. 1 ) . unwrap ( ) ;
2993
- bs_announcement_sigs
2994
- } ;
2998
+ node_b. node . handle_funding_locked ( & node_a. node . get_our_node_id ( ) , & as_funding_msgs. 0 ) . unwrap ( ) ;
2999
+ let bs_announcement_sigs = get_event_msg ! ( node_b, MessageSendEvent :: SendAnnouncementSignatures , node_a. node. get_our_node_id( ) ) ;
3000
+ node_b. node . handle_announcement_signatures ( & node_a. node . get_our_node_id ( ) , & as_funding_msgs. 1 ) . unwrap ( ) ;
2995
3001
2996
3002
let events_7 = node_b. node . get_and_clear_pending_msg_events ( ) ;
2997
3003
assert_eq ! ( events_7. len( ) , 1 ) ;
@@ -5034,9 +5040,14 @@ mod tests {
5034
5040
5035
5041
for chan_msgs in resp_1. drain ( ..) {
5036
5042
if pre_all_htlcs {
5037
- let a = node_a. node . handle_funding_locked ( & node_b. node . get_our_node_id ( ) , & chan_msgs. 0 . unwrap ( ) ) ;
5038
- let _announcement_sigs_opt = a. unwrap ( ) ;
5039
- //TODO: Test announcement_sigs re-sending when we've implemented it
5043
+ node_a. node . handle_funding_locked ( & node_b. node . get_our_node_id ( ) , & chan_msgs. 0 . unwrap ( ) ) . unwrap ( ) ;
5044
+ let announcement_event = node_a. node . get_and_clear_pending_msg_events ( ) ;
5045
+ if !announcement_event. is_empty ( ) {
5046
+ assert_eq ! ( announcement_event. len( ) , 1 ) ;
5047
+ if let MessageSendEvent :: SendAnnouncementSignatures { .. } = announcement_event[ 0 ] {
5048
+ //TODO: Test announcement_sigs re-sending
5049
+ } else { panic ! ( "Unexpected event!" ) ; }
5050
+ }
5040
5051
} else {
5041
5052
assert ! ( chan_msgs. 0 . is_none( ) ) ;
5042
5053
}
@@ -5083,8 +5094,14 @@ mod tests {
5083
5094
5084
5095
for chan_msgs in resp_2. drain ( ..) {
5085
5096
if pre_all_htlcs {
5086
- let _announcement_sigs_opt = node_b. node . handle_funding_locked ( & node_a. node . get_our_node_id ( ) , & chan_msgs. 0 . unwrap ( ) ) . unwrap ( ) ;
5087
- //TODO: Test announcement_sigs re-sending when we've implemented it
5097
+ node_b. node . handle_funding_locked ( & node_a. node . get_our_node_id ( ) , & chan_msgs. 0 . unwrap ( ) ) . unwrap ( ) ;
5098
+ let announcement_event = node_b. node . get_and_clear_pending_msg_events ( ) ;
5099
+ if !announcement_event. is_empty ( ) {
5100
+ assert_eq ! ( announcement_event. len( ) , 1 ) ;
5101
+ if let MessageSendEvent :: SendAnnouncementSignatures { .. } = announcement_event[ 0 ] {
5102
+ //TODO: Test announcement_sigs re-sending
5103
+ } else { panic ! ( "Unexpected event!" ) ; }
5104
+ }
5088
5105
} else {
5089
5106
assert ! ( chan_msgs. 0 . is_none( ) ) ;
5090
5107
}
@@ -5390,9 +5407,8 @@ mod tests {
5390
5407
let events_1 = nodes[ 0 ] . node . get_and_clear_pending_msg_events ( ) ;
5391
5408
assert_eq ! ( events_1. len( ) , 1 ) ;
5392
5409
match events_1[ 0 ] {
5393
- MessageSendEvent :: SendFundingLocked { ref node_id, msg : _, ref announcement_sigs } => {
5410
+ MessageSendEvent :: SendFundingLocked { ref node_id, msg : _ } => {
5394
5411
assert_eq ! ( * node_id, nodes[ 1 ] . node. get_our_node_id( ) ) ;
5395
- assert ! ( announcement_sigs. is_none( ) ) ;
5396
5412
} ,
5397
5413
_ => panic ! ( "Unexpected event" ) ,
5398
5414
}
@@ -5401,9 +5417,8 @@ mod tests {
5401
5417
let events_2 = nodes[ 1 ] . node . get_and_clear_pending_msg_events ( ) ;
5402
5418
assert_eq ! ( events_2. len( ) , 1 ) ;
5403
5419
match events_2[ 0 ] {
5404
- MessageSendEvent :: SendFundingLocked { ref node_id, msg : _, ref announcement_sigs } => {
5420
+ MessageSendEvent :: SendFundingLocked { ref node_id, msg : _ } => {
5405
5421
assert_eq ! ( * node_id, nodes[ 0 ] . node. get_our_node_id( ) ) ;
5406
- assert ! ( announcement_sigs. is_none( ) ) ;
5407
5422
} ,
5408
5423
_ => panic ! ( "Unexpected event" ) ,
5409
5424
}
0 commit comments