@@ -285,7 +285,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
285
285
if peers. peers . insert ( descriptor, Peer {
286
286
encryptor : PeerState :: Handshake ( handshake) ,
287
287
outbound : true ,
288
- their_node_id : None ,
288
+ their_node_id : Some ( their_node_id . clone ( ) ) ,
289
289
their_features : None ,
290
290
291
291
pending_outbound_buffer : LinkedList :: new ( ) ,
@@ -313,7 +313,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
313
313
/// Panics if descriptor is duplicative with some other descriptor which has not yet has a
314
314
/// disconnect_event.
315
315
pub fn new_inbound_connection ( & self , descriptor : Descriptor ) -> Result < ( ) , PeerHandleError > {
316
- let handshake = PeerHandshake :: new ( & self . our_node_secret , & self . get_ephemeral_key ( ) ) ;
316
+ let mut handshake = PeerHandshake :: new ( & self . our_node_secret , & self . get_ephemeral_key ( ) ) ;
317
+ handshake. make_inbound ( ) ;
317
318
318
319
let mut peers = self . peers . lock ( ) . unwrap ( ) ;
319
320
if peers. peers . insert ( descriptor, Peer {
@@ -465,28 +466,16 @@ impl<Descriptor: SocketDescriptor, CM: Deref> PeerManager<Descriptor, CM> where
465
466
peer. pending_read_buffer . extend_from_slice ( & data) ;
466
467
while peer. pending_read_buffer . len ( ) > 0 {
467
468
468
- macro_rules! insert_node_id {
469
- ( ) => {
470
- match peers. node_id_to_descriptor. entry( peer. their_node_id. unwrap( ) ) {
471
- hash_map:: Entry :: Occupied ( _) => {
472
- log_trace!( self , "Got second connection with {}, closing" , log_pubkey!( peer. their_node_id. unwrap( ) ) ) ;
473
- peer. their_node_id = None ; // Unset so that we don't generate a peer_disconnected event
474
- return Err ( PeerHandleError { no_connection_possible: false } )
475
- } ,
476
- hash_map:: Entry :: Vacant ( entry) => {
477
- log_trace!( self , "Finished noise handshake for connection with {}" , log_pubkey!( peer. their_node_id. unwrap( ) ) ) ;
478
- entry. insert( peer_descriptor. clone( ) )
479
- } ,
480
- } ;
481
- }
482
- }
483
-
484
469
let mut conduit_option = None ;
485
470
486
471
if let & mut PeerState :: Handshake ( ref mut handshake) = & mut peer. encryptor {
487
472
let ( response, conduit, remote_pubkey) = handshake. process_act ( & peer. pending_read_buffer , None ) . unwrap ( ) ;
488
473
peer. pending_read_buffer . drain ( ..) ; // we read it all
489
474
475
+ if let Some ( key) = remote_pubkey {
476
+ peer. their_node_id . replace ( key) ;
477
+ }
478
+
490
479
peer. pending_outbound_buffer . push_back ( response) ;
491
480
if let Some ( conduit) = conduit {
492
481
conduit_option = Some ( conduit) ;
0 commit comments