@@ -3103,25 +3103,56 @@ fn test_funding_peer_disconnect() {
3103
3103
confirm_transaction ( & nodes[ 1 ] . chain_monitor , & tx, tx. version ) ;
3104
3104
let events_2 = nodes[ 1 ] . node . get_and_clear_pending_msg_events ( ) ;
3105
3105
assert_eq ! ( events_2. len( ) , 2 ) ;
3106
- match events_2[ 0 ] {
3107
- MessageSendEvent :: SendFundingLocked { ref node_id, msg : _ } => {
3106
+ let funding_locked = match events_2[ 0 ] {
3107
+ MessageSendEvent :: SendFundingLocked { ref node_id, ref msg } => {
3108
3108
assert_eq ! ( * node_id, nodes[ 0 ] . node. get_our_node_id( ) ) ;
3109
+ msg. clone ( )
3109
3110
} ,
3110
3111
_ => panic ! ( "Unexpected event" ) ,
3111
- }
3112
- match events_2[ 1 ] {
3113
- MessageSendEvent :: SendAnnouncementSignatures { ref node_id, msg : _ } => {
3112
+ } ;
3113
+ let bs_announcement_sigs = match events_2[ 1 ] {
3114
+ MessageSendEvent :: SendAnnouncementSignatures { ref node_id, ref msg } => {
3114
3115
assert_eq ! ( * node_id, nodes[ 0 ] . node. get_our_node_id( ) ) ;
3116
+ msg. clone ( )
3115
3117
} ,
3116
3118
_ => panic ! ( "Unexpected event" ) ,
3117
- }
3119
+ } ;
3118
3120
3119
3121
reconnect_nodes ( & nodes[ 0 ] , & nodes[ 1 ] , ( true , true ) , ( 0 , 0 ) , ( 0 , 0 ) , ( 0 , 0 ) , ( 0 , 0 ) , ( false , false ) ) ;
3120
3122
3121
- // TODO: We shouldn't need to manually pass list_usable_chanels here once we support
3122
- // rebroadcasting announcement_signatures upon reconnect.
3123
+ nodes[ 0 ] . node . handle_funding_locked ( & nodes[ 1 ] . node . get_our_node_id ( ) , & funding_locked) . unwrap ( ) ;
3124
+ nodes[ 0 ] . node . handle_announcement_signatures ( & nodes[ 1 ] . node . get_our_node_id ( ) , & bs_announcement_sigs) . unwrap ( ) ;
3125
+ let events_3 = nodes[ 0 ] . node . get_and_clear_pending_msg_events ( ) ;
3126
+ assert_eq ! ( events_3. len( ) , 2 ) ;
3127
+ let as_announcement_sigs = match events_3[ 0 ] {
3128
+ MessageSendEvent :: SendAnnouncementSignatures { ref node_id, ref msg } => {
3129
+ assert_eq ! ( * node_id, nodes[ 1 ] . node. get_our_node_id( ) ) ;
3130
+ msg. clone ( )
3131
+ } ,
3132
+ _ => panic ! ( "Unexpected event" ) ,
3133
+ } ;
3134
+ let ( as_announcement, as_update) = match events_3[ 1 ] {
3135
+ MessageSendEvent :: BroadcastChannelAnnouncement { ref msg, ref update_msg } => {
3136
+ ( msg. clone ( ) , update_msg. clone ( ) )
3137
+ } ,
3138
+ _ => panic ! ( "Unexpected event" ) ,
3139
+ } ;
3140
+
3141
+ nodes[ 1 ] . node . handle_announcement_signatures ( & nodes[ 0 ] . node . get_our_node_id ( ) , & as_announcement_sigs) . unwrap ( ) ;
3142
+ let events_4 = nodes[ 1 ] . node . get_and_clear_pending_msg_events ( ) ;
3143
+ assert_eq ! ( events_4. len( ) , 1 ) ;
3144
+ let ( _, bs_update) = match events_4[ 0 ] {
3145
+ MessageSendEvent :: BroadcastChannelAnnouncement { ref msg, ref update_msg } => {
3146
+ ( msg. clone ( ) , update_msg. clone ( ) )
3147
+ } ,
3148
+ _ => panic ! ( "Unexpected event" ) ,
3149
+ } ;
3123
3150
3124
- let route = nodes[ 0 ] . router . get_route ( & nodes[ 1 ] . node . get_our_node_id ( ) , Some ( & nodes[ 0 ] . node . list_usable_channels ( ) ) , & Vec :: new ( ) , 1000000 , TEST_FINAL_CLTV ) . unwrap ( ) ;
3151
+ nodes[ 0 ] . router . handle_channel_announcement ( & as_announcement) . unwrap ( ) ;
3152
+ nodes[ 0 ] . router . handle_channel_update ( & bs_update) . unwrap ( ) ;
3153
+ nodes[ 0 ] . router . handle_channel_update ( & as_update) . unwrap ( ) ;
3154
+
3155
+ let route = nodes[ 0 ] . router . get_route ( & nodes[ 1 ] . node . get_our_node_id ( ) , None , & Vec :: new ( ) , 1000000 , TEST_FINAL_CLTV ) . unwrap ( ) ;
3125
3156
let ( payment_preimage, _) = send_along_route ( & nodes[ 0 ] , route, & [ & nodes[ 1 ] ] , 1000000 ) ;
3126
3157
claim_payment ( & nodes[ 0 ] , & [ & nodes[ 1 ] ] , payment_preimage, 1_000_000 ) ;
3127
3158
}
0 commit comments