@@ -508,6 +508,7 @@ pub struct PeerManager<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: D
508
508
/// when an event process call is waiting.
509
509
blocked_event_processors : AtomicBool ,
510
510
our_node_secret : SecretKey ,
511
+ our_features : InitFeatures ,
511
512
ephemeral_key_midstate : Sha256Engine ,
512
513
custom_message_handler : CMH ,
513
514
@@ -642,16 +643,18 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
642
643
let ephemeral_hash = Sha256 :: from_engine ( ephemeral_key_midstate. clone ( ) ) . into_inner ( ) ;
643
644
secp_ctx. seeded_randomize ( & ephemeral_hash) ;
644
645
645
- if message_handler. onion_message_handler . supports_onion_message_forwarding ( ) {
646
+ let our_features = if message_handler. onion_message_handler . supports_onion_message_forwarding ( ) {
646
647
message_handler. chan_handler . advertise_onion_message_support ( ) ;
647
- }
648
+ InitFeatures :: known ( )
649
+ } else { InitFeatures :: known ( ) . clear_onion_messages ( ) } ;
648
650
PeerManager {
649
651
message_handler,
650
652
peers : FairRwLock :: new ( HashMap :: new ( ) ) ,
651
653
node_id_to_descriptor : Mutex :: new ( HashMap :: new ( ) ) ,
652
654
event_processing_lock : Mutex :: new ( ( ) ) ,
653
655
blocked_event_processors : AtomicBool :: new ( false ) ,
654
656
our_node_secret,
657
+ our_features,
655
658
ephemeral_key_midstate,
656
659
peer_counter : AtomicCounter :: new ( ) ,
657
660
logger,
@@ -1033,9 +1036,10 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
1033
1036
1034
1037
peer. their_node_id = Some ( their_node_id) ;
1035
1038
insert_node_id ! ( ) ;
1036
- let features = if self . message_handler . onion_message_handler . supports_onion_message_forwarding ( )
1037
- { InitFeatures :: known ( ) } else { InitFeatures :: known_without_onion_messages ( ) } ;
1038
- let resp = msgs:: Init { features, remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) ) } ;
1039
+ let resp = msgs:: Init {
1040
+ features : self . our_features . clone ( ) ,
1041
+ remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) )
1042
+ } ;
1039
1043
self . enqueue_message ( peer, & resp) ;
1040
1044
peer. awaiting_pong_timer_tick_intervals = 0 ;
1041
1045
} ,
@@ -1046,9 +1050,10 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
1046
1050
peer. pending_read_is_header = true ;
1047
1051
peer. their_node_id = Some ( their_node_id) ;
1048
1052
insert_node_id ! ( ) ;
1049
- let features = if self . message_handler . onion_message_handler . supports_onion_message_forwarding ( )
1050
- { InitFeatures :: known ( ) } else { InitFeatures :: known_without_onion_messages ( ) } ;
1051
- let resp = msgs:: Init { features, remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) ) } ;
1053
+ let resp = msgs:: Init {
1054
+ features : self . our_features . clone ( ) ,
1055
+ remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) )
1056
+ } ;
1052
1057
self . enqueue_message ( peer, & resp) ;
1053
1058
peer. awaiting_pong_timer_tick_intervals = 0 ;
1054
1059
} ,
0 commit comments