@@ -476,22 +476,27 @@ impl NetworkExtension<Event> for Extension {
476476 cinfo ! ( SYNC , "New peer detected #{}" , id) ;
477477 self . send_status ( id) ;
478478
479- let t = self . connected_nodes . insert ( * id) ;
480- debug_assert ! ( t, "{} is already added to peer list" , id) ;
479+ if !self . connected_nodes . contains ( id) {
480+ let t = self . connected_nodes . insert ( * id) ;
481+ debug_assert ! ( t, "{} is already added to peer list" , id) ;
482+ }
481483
482484 let token = self . token_generator . gen ( ) . expect ( "Token generator is full" ) ;
483485 let token_info = TokenInfo {
484486 node_id : * id,
485487 request_id : None ,
486488 } ;
487489
488- let t = self . requests . insert ( * id, Vec :: new ( ) ) ;
489- debug_assert_eq ! ( None , t) ;
490- let t = self . tokens_info . insert ( token, token_info) ;
491- debug_assert_eq ! ( None , t) ;
492- let t = self . tokens . insert ( * id, token) ;
493- debug_assert_eq ! ( None , t) ;
494- debug_assert ! ( t. is_none( ) ) ;
490+ if !self . requests . contains_key ( id) {
491+ let t = self . requests . insert ( * id, Vec :: new ( ) ) ;
492+ debug_assert_eq ! ( None , t) ;
493+ }
494+ self . tokens_info . entry ( token) . or_insert ( token_info) ;
495+ if !self . tokens . contains_key ( id) {
496+ let t = self . tokens . insert ( * id, token) ;
497+ debug_assert_eq ! ( None , t) ;
498+ debug_assert ! ( t. is_none( ) ) ;
499+ }
495500 }
496501
497502 fn on_node_removed ( & mut self , id : & NodeId ) {
0 commit comments