@@ -1136,7 +1136,23 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
1136
1136
} ,
1137
1137
MessageSendEvent :: BroadcastChannelAnnouncement { ref msg, ref update_msg } => {
1138
1138
log_trace ! ( self . logger, "Handling BroadcastChannelAnnouncement event in peer_handler for short channel id {}" , msg. contents. short_channel_id) ;
1139
- if self . message_handler . route_handler . handle_channel_announcement ( msg) . is_ok ( ) && self . message_handler . route_handler . handle_channel_update ( update_msg) . is_ok ( ) {
1139
+ let route_handler_wants_broadcast = match self . message_handler . route_handler . handle_channel_announcement ( msg) {
1140
+ Err ( e) => {
1141
+ log_trace ! ( self . logger, "Ignoring because handle_channel_announcement returned error: {:?}" , e) ;
1142
+ false
1143
+ }
1144
+ Ok ( false ) => false ,
1145
+ Ok ( true ) => {
1146
+ match self . message_handler . route_handler . handle_channel_update ( update_msg) {
1147
+ Err ( e) => {
1148
+ log_trace ! ( self . logger, "Ignoring because handle_channel_update returned error: {:?}" , e) ;
1149
+ false
1150
+ } ,
1151
+ Ok ( result) => result
1152
+ }
1153
+ }
1154
+ } ;
1155
+ if route_handler_wants_broadcast {
1140
1156
for ( descriptor, peer) in peers. initialized_peers_mut ( ) {
1141
1157
if !peer. should_forward_channel_announcement ( msg. contents . short_channel_id ) {
1142
1158
continue
@@ -1154,26 +1170,38 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
1154
1170
} ,
1155
1171
MessageSendEvent :: BroadcastNodeAnnouncement { ref msg } => {
1156
1172
log_trace ! ( self . logger, "Handling BroadcastNodeAnnouncement event in peer_handler" ) ;
1157
- if self . message_handler . route_handler . handle_node_announcement ( msg) . is_ok ( ) {
1158
- for ( descriptor, peer) in peers. initialized_peers_mut ( ) {
1159
- if !peer. should_forward_node_announcement ( msg. contents . node_id ) {
1160
- continue
1173
+ match self . message_handler . route_handler . handle_node_announcement ( msg) {
1174
+ Err ( e) => {
1175
+ log_trace ! ( self . logger, "Ignoring because handle_node_announcement returned error: {:?}" , e) ;
1176
+ } ,
1177
+ Ok ( true ) => {
1178
+ for ( descriptor, peer) in peers. initialized_peers_mut ( ) {
1179
+ if !peer. should_forward_node_announcement ( msg. contents . node_id ) {
1180
+ continue
1181
+ }
1182
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1183
+ self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , & mut peer. post_init_state , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1161
1184
}
1162
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1163
- self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , & mut peer. post_init_state , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1164
- }
1185
+ } ,
1186
+ Ok ( false ) => { }
1165
1187
}
1166
1188
} ,
1167
1189
MessageSendEvent :: BroadcastChannelUpdate { ref msg } => {
1168
1190
log_trace ! ( self . logger, "Handling BroadcastChannelUpdate event in peer_handler for short channel id {}" , msg. contents. short_channel_id) ;
1169
- if self . message_handler . route_handler . handle_channel_update ( msg) . is_ok ( ) {
1170
- for ( descriptor, peer) in peers. initialized_peers_mut ( ) {
1171
- if !peer. should_forward_channel_announcement ( msg. contents . short_channel_id ) {
1172
- continue
1191
+ match self . message_handler . route_handler . handle_channel_update ( msg) {
1192
+ Err ( e) => {
1193
+ log_trace ! ( self . logger, "Ignoring because handle_channel_update returned error: {:?}" , e) ;
1194
+ } ,
1195
+ Ok ( true ) => {
1196
+ for ( descriptor, peer) in peers. initialized_peers_mut ( ) {
1197
+ if !peer. should_forward_channel_announcement ( msg. contents . short_channel_id ) {
1198
+ continue
1199
+ }
1200
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1201
+ self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , & mut peer. post_init_state , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1173
1202
}
1174
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1175
- self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , & mut peer. post_init_state , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1176
- }
1203
+ } ,
1204
+ Ok ( false ) => { }
1177
1205
}
1178
1206
} ,
1179
1207
MessageSendEvent :: PaymentFailureNetworkUpdate { ref update } => {
@@ -2468,7 +2496,6 @@ mod unit_tests {
2468
2496
// Test that a post-Init connection:
2469
2497
// * process_events() sends nothing when it receives a BroadcastChannelAnnouncement if the
2470
2498
// route_handler.handle_channel_announcement returns false
2471
- // XXXBUG: Implementation does not check return value of handle_channel_announcement, only that it didn't error
2472
2499
#[ test]
2473
2500
fn post_init_broadcast_channel_announcement_route_handler_handle_announcement_returns_false ( ) {
2474
2501
let channel_handler = TestChannelMessageHandler :: new ( ) ;
@@ -2485,13 +2512,12 @@ mod unit_tests {
2485
2512
let peer_manager = new_peer_manager_post_init ! ( & test_ctx, & mut descriptor, & transport) ;
2486
2513
2487
2514
peer_manager. process_events ( ) ;
2488
- // assert!(descriptor.get_recording().is_empty());
2515
+ assert ! ( descriptor. get_recording( ) . is_empty( ) ) ;
2489
2516
}
2490
2517
2491
2518
// Test that a post-Init connection:
2492
2519
// * process_events() sends nothing when it receives a BroadcastChannelAnnouncement if the
2493
2520
// route_handler.handle_channel_update returns false
2494
- // XXXBUG: Implementation does not check return value of handle_channel_update, only that it didn't error
2495
2521
#[ test]
2496
2522
fn post_init_broadcast_channel_announcement_route_handle_update_returns_false ( ) {
2497
2523
let channel_handler = TestChannelMessageHandler :: new ( ) ;
@@ -2508,7 +2534,7 @@ mod unit_tests {
2508
2534
let peer_manager = new_peer_manager_post_init ! ( & test_ctx, & mut descriptor, & transport) ;
2509
2535
2510
2536
peer_manager. process_events ( ) ;
2511
- // assert!(descriptor.get_recording().is_empty());
2537
+ assert ! ( descriptor. get_recording( ) . is_empty( ) ) ;
2512
2538
}
2513
2539
2514
2540
// To reduce test expansion, the unconnected and connected transport tests are only run on one
@@ -2673,7 +2699,6 @@ mod unit_tests {
2673
2699
// Test that a post-Init connection:
2674
2700
// * process_events() sends nothing when it receives a BroadcastNodeAnnouncement if the
2675
2701
// route_handler.handle_node_announcement returns false
2676
- // XXXBUG: Implementation does not check return value of handle_node_announcement, only that it didn't error
2677
2702
#[ test]
2678
2703
fn post_init_broadcast_node_announcement_route_handler_handle_announcement_returns_false ( ) {
2679
2704
let channel_handler = TestChannelMessageHandler :: new ( ) ;
@@ -2689,7 +2714,7 @@ mod unit_tests {
2689
2714
let peer_manager = new_peer_manager_post_init ! ( & test_ctx, & mut descriptor, & transport) ;
2690
2715
2691
2716
peer_manager. process_events ( ) ;
2692
- // assert!(descriptor.get_recording().is_empty());
2717
+ assert ! ( descriptor. get_recording( ) . is_empty( ) ) ;
2693
2718
}
2694
2719
2695
2720
// Test that a post-Init connection:
@@ -2737,7 +2762,6 @@ mod unit_tests {
2737
2762
// Test that a post-Init connection:
2738
2763
// * process_events() sends nothing when it receives a BroadcastChannelUpdate if the
2739
2764
// route_handler.handle_channel_update returns false
2740
- // XXXBUG: Implementation does not check return value of handle_node_announcement, only that it didn't error
2741
2765
#[ test]
2742
2766
fn post_init_broadcast_channel_update_route_handler_handle_update_returns_false ( ) {
2743
2767
let channel_handler = TestChannelMessageHandler :: new ( ) ;
@@ -2753,7 +2777,7 @@ mod unit_tests {
2753
2777
let peer_manager = new_peer_manager_post_init ! ( & test_ctx, & mut descriptor, & transport) ;
2754
2778
2755
2779
peer_manager. process_events ( ) ;
2756
- // assert!(descriptor.get_recording().is_empty());
2780
+ assert ! ( descriptor. get_recording( ) . is_empty( ) ) ;
2757
2781
}
2758
2782
2759
2783
// Test that a post-Init connection:
0 commit comments