@@ -584,11 +584,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
584
584
585
585
peer. their_node_id = Some ( their_node_id) ;
586
586
insert_node_id ! ( ) ;
587
- let mut features = InitFeatures :: known ( ) ;
588
- if !self . message_handler . route_handler . should_request_full_sync ( & peer. their_node_id . unwrap ( ) ) {
589
- features. clear_initial_routing_sync ( ) ;
590
- }
591
-
587
+ let features = InitFeatures :: known ( ) ;
592
588
let resp = msgs:: Init { features } ;
593
589
self . enqueue_message ( & mut peers. peers_needing_send , peer, peer_descriptor. clone ( ) , & resp) ;
594
590
} ,
@@ -694,10 +690,11 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
694
690
}
695
691
696
692
log_info ! (
697
- self . logger, "Received peer Init message: data_loss_protect: {}, initial_routing_sync: {}, upfront_shutdown_script: {}, static_remote_key: {}, unknown flags (local and global): {}" ,
693
+ self . logger, "Received peer Init message: data_loss_protect: {}, initial_routing_sync: {}, upfront_shutdown_script: {}, gossip_queries: {}, static_remote_key: {}, unknown flags (local and global): {}" ,
698
694
if msg. features. supports_data_loss_protect( ) { "supported" } else { "not supported" } ,
699
695
if msg. features. initial_routing_sync( ) { "requested" } else { "not requested" } ,
700
696
if msg. features. supports_upfront_shutdown_script( ) { "supported" } else { "not supported" } ,
697
+ if msg. features. supports_gossip_queries( ) { "supported" } else { "not supported" } ,
701
698
if msg. features. supports_static_remote_key( ) { "supported" } else { "not supported" } ,
702
699
if msg. features. supports_unknown_bits( ) { "present" } else { "none" }
703
700
) ;
@@ -712,15 +709,13 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
712
709
}
713
710
714
711
if !peer. outbound {
715
- let mut features = InitFeatures :: known ( ) ;
716
- if !self . message_handler . route_handler . should_request_full_sync ( & peer. their_node_id . unwrap ( ) ) {
717
- features. clear_initial_routing_sync ( ) ;
718
- }
719
-
712
+ let features = InitFeatures :: known ( ) ;
720
713
let resp = msgs:: Init { features } ;
721
714
self . enqueue_message ( peers_needing_send, peer, peer_descriptor. clone ( ) , & resp) ;
722
715
}
723
716
717
+ self . message_handler . route_handler . sync_routing_table ( & peer. their_node_id . unwrap ( ) , & msg) ;
718
+
724
719
self . message_handler . chan_handler . peer_connected ( & peer. their_node_id . unwrap ( ) , & msg) ;
725
720
peer. their_features = Some ( msg. features ) ;
726
721
} ,
@@ -840,6 +835,21 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
840
835
// TODO: forward msg along to all our other peers!
841
836
}
842
837
} ,
838
+ wire:: Message :: QueryShortChannelIds ( msg) => {
839
+ self . message_handler . route_handler . handle_query_short_channel_ids ( & peer. their_node_id . unwrap ( ) , msg) ?;
840
+ } ,
841
+ wire:: Message :: ReplyShortChannelIdsEnd ( msg) => {
842
+ self . message_handler . route_handler . handle_reply_short_channel_ids_end ( & peer. their_node_id . unwrap ( ) , msg) ?;
843
+ } ,
844
+ wire:: Message :: QueryChannelRange ( msg) => {
845
+ self . message_handler . route_handler . handle_query_channel_range ( & peer. their_node_id . unwrap ( ) , msg) ?;
846
+ } ,
847
+ wire:: Message :: ReplyChannelRange ( msg) => {
848
+ self . message_handler . route_handler . handle_reply_channel_range ( & peer. their_node_id . unwrap ( ) , msg) ?;
849
+ } ,
850
+ wire:: Message :: GossipTimestampFilter ( _msg) => {
851
+ // TODO: handle message
852
+ } ,
843
853
844
854
// Unknown messages:
845
855
wire:: Message :: Unknown ( msg_type) if msg_type. is_even ( ) => {
@@ -864,6 +874,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
864
874
// drop optional-ish messages when send buffers get full!
865
875
866
876
let mut events_generated = self . message_handler . chan_handler . get_and_clear_pending_msg_events ( ) ;
877
+ events_generated. append ( & mut self . message_handler . route_handler . get_and_clear_pending_msg_events ( ) ) ;
867
878
let mut peers_lock = self . peers . lock ( ) . unwrap ( ) ;
868
879
let peers = & mut * peers_lock;
869
880
for event in events_generated. drain ( ..) {
@@ -1115,6 +1126,16 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1115
1126
self . do_attempt_write_data ( & mut descriptor, peer) ;
1116
1127
} ,
1117
1128
}
1129
+ } ,
1130
+ MessageSendEvent :: SendChannelRangeQuery { ref node_id, ref msg } => {
1131
+ let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, { } ) ;
1132
+ peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1133
+ self . do_attempt_write_data ( & mut descriptor, peer) ;
1134
+ } ,
1135
+ MessageSendEvent :: SendShortIdsQuery { ref node_id, ref msg } => {
1136
+ let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, { } ) ;
1137
+ peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1138
+ self . do_attempt_write_data ( & mut descriptor, peer) ;
1118
1139
}
1119
1140
}
1120
1141
}
@@ -1302,13 +1323,6 @@ mod tests {
1302
1323
( fd_a. clone ( ) , fd_b. clone ( ) )
1303
1324
}
1304
1325
1305
- fn establish_connection_and_read_events < ' a > ( peer_a : & PeerManager < FileDescriptor , & ' a test_utils:: TestChannelMessageHandler , & ' a test_utils:: TestRoutingMessageHandler , & ' a test_utils:: TestLogger > , peer_b : & PeerManager < FileDescriptor , & ' a test_utils:: TestChannelMessageHandler , & ' a test_utils:: TestRoutingMessageHandler , & ' a test_utils:: TestLogger > ) -> ( FileDescriptor , FileDescriptor ) {
1306
- let ( mut fd_a, mut fd_b) = establish_connection ( peer_a, peer_b) ;
1307
- assert_eq ! ( peer_b. read_event( & mut fd_b, & fd_a. outbound_data. lock( ) . unwrap( ) . split_off( 0 ) ) . unwrap( ) , false ) ;
1308
- assert_eq ! ( peer_a. read_event( & mut fd_a, & fd_b. outbound_data. lock( ) . unwrap( ) . split_off( 0 ) ) . unwrap( ) , false ) ;
1309
- ( fd_a. clone ( ) , fd_b. clone ( ) )
1310
- }
1311
-
1312
1326
#[ test]
1313
1327
fn test_disconnect_peer ( ) {
1314
1328
// Simple test which builds a network of PeerManager, connects and brings them to NoiseState::Finished and
@@ -1377,41 +1391,4 @@ mod tests {
1377
1391
assert_eq ! ( cfgs[ 1 ] . routing_handler. chan_upds_recvd. load( Ordering :: Acquire ) , 100 ) ;
1378
1392
assert_eq ! ( cfgs[ 1 ] . routing_handler. chan_anns_recvd. load( Ordering :: Acquire ) , 50 ) ;
1379
1393
}
1380
-
1381
- #[ test]
1382
- fn limit_initial_routing_sync_requests ( ) {
1383
- // Inbound peer 0 requests initial_routing_sync, but outbound peer 1 does not.
1384
- {
1385
- let cfgs = create_peermgr_cfgs ( 2 ) ;
1386
- cfgs[ 0 ] . routing_handler . request_full_sync . store ( true , Ordering :: Release ) ;
1387
- let peers = create_network ( 2 , & cfgs) ;
1388
- let ( fd_0_to_1, fd_1_to_0) = establish_connection_and_read_events ( & peers[ 0 ] , & peers[ 1 ] ) ;
1389
-
1390
- let peer_0 = peers[ 0 ] . peers . lock ( ) . unwrap ( ) ;
1391
- let peer_1 = peers[ 1 ] . peers . lock ( ) . unwrap ( ) ;
1392
-
1393
- let peer_0_features = peer_1. peers . get ( & fd_1_to_0) . unwrap ( ) . their_features . as_ref ( ) ;
1394
- let peer_1_features = peer_0. peers . get ( & fd_0_to_1) . unwrap ( ) . their_features . as_ref ( ) ;
1395
-
1396
- assert ! ( peer_0_features. unwrap( ) . initial_routing_sync( ) ) ;
1397
- assert ! ( !peer_1_features. unwrap( ) . initial_routing_sync( ) ) ;
1398
- }
1399
-
1400
- // Outbound peer 1 requests initial_routing_sync, but inbound peer 0 does not.
1401
- {
1402
- let cfgs = create_peermgr_cfgs ( 2 ) ;
1403
- cfgs[ 1 ] . routing_handler . request_full_sync . store ( true , Ordering :: Release ) ;
1404
- let peers = create_network ( 2 , & cfgs) ;
1405
- let ( fd_0_to_1, fd_1_to_0) = establish_connection_and_read_events ( & peers[ 0 ] , & peers[ 1 ] ) ;
1406
-
1407
- let peer_0 = peers[ 0 ] . peers . lock ( ) . unwrap ( ) ;
1408
- let peer_1 = peers[ 1 ] . peers . lock ( ) . unwrap ( ) ;
1409
-
1410
- let peer_0_features = peer_1. peers . get ( & fd_1_to_0) . unwrap ( ) . their_features . as_ref ( ) ;
1411
- let peer_1_features = peer_0. peers . get ( & fd_0_to_1) . unwrap ( ) . their_features . as_ref ( ) ;
1412
-
1413
- assert ! ( !peer_0_features. unwrap( ) . initial_routing_sync( ) ) ;
1414
- assert ! ( peer_1_features. unwrap( ) . initial_routing_sync( ) ) ;
1415
- }
1416
- }
1417
1394
}
0 commit comments