@@ -480,6 +480,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
480
480
let mut conduit_option = None ;
481
481
let mut remote_pubkey_option = None ;
482
482
483
+ let mut needs_to_send_init_message = false ;
484
+
483
485
if let & mut PeerState :: Authenticating ( ref mut handshake) = & mut peer. encryptor {
484
486
let ( next_act, conduit) = handshake. process_act ( & peer. pending_read_buffer ) . unwrap ( ) ;
485
487
peer. pending_read_buffer = Vec :: new ( ) ; // empty the pending read buffer
@@ -488,11 +490,16 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
488
490
remote_pubkey_option = Some ( key) ;
489
491
}
490
492
493
+ let mut has_remaining_act = false ;
491
494
if let Some ( act) = next_act {
495
+ has_remaining_act = true ;
492
496
peer. pending_outbound_buffer . push_back ( act. serialize ( ) ) ;
493
497
}
494
498
495
499
if let Some ( conduit) = conduit {
500
+ if has_remaining_act {
501
+ needs_to_send_init_message = true ;
502
+ }
496
503
conduit_option = Some ( conduit) ;
497
504
}
498
505
}
@@ -557,6 +564,16 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
557
564
}
558
565
}
559
566
567
+ if needs_to_send_init_message {
568
+ let mut features = InitFeatures :: supported ( ) ;
569
+ if self . message_handler . route_handler . should_request_full_sync ( & peer. their_node_id . unwrap ( ) ) {
570
+ features. set_initial_routing_sync ( ) ;
571
+ }
572
+
573
+ let resp = msgs:: Init { features } ;
574
+ encode_and_send_msg ! ( resp) ;
575
+ }
576
+
560
577
let message_option = conduit. decrypt_single_message ( Some ( & peer. pending_read_buffer . clone ( ) ) ) ;
561
578
peer. pending_read_buffer = Vec :: new ( ) ; // empty the pending read buffer
562
579
let msg_data = if let Some ( message) = message_option {
0 commit comments