@@ -607,7 +607,7 @@ func (s *Service) handleIncoming(stream network.Stream) {
607607 s .logger .Debug ("stream handler: handshake: build remote multiaddrs" , "peer_id" , peerID , "error" , err )
608608 s .logger .Error (nil , "stream handler: handshake: build remote multiaddrs" , "peer_id" , peerID )
609609 _ = handshakeStream .Reset ()
610- _ = s . host . Network ().ClosePeer ( peerID )
610+ _ = stream . Conn ().Close ( )
611611 return
612612 }
613613
@@ -622,7 +622,7 @@ func (s *Service) handleIncoming(stream network.Stream) {
622622 s .logger .Debug ("stream handler: handshake: build remote multiaddrs fallback" , "peer_id" , peerID , "error" , err )
623623 s .logger .Error (nil , "stream handler: handshake: build remote multiaddrs fallback" , "peer_id" , peerID )
624624 _ = handshakeStream .Reset ()
625- _ = s . host . Network ().ClosePeer ( peerID )
625+ _ = stream . Conn ().Close ( )
626626 return
627627 }
628628 }
@@ -636,7 +636,7 @@ func (s *Service) handleIncoming(stream network.Stream) {
636636 s .logger .Debug ("stream handler: handshake: handle failed" , "peer_id" , peerID , "error" , err )
637637 s .logger .Error (nil , "stream handler: handshake: handle failed" , "peer_id" , peerID )
638638 _ = handshakeStream .Reset ()
639- _ = s . host . Network ().ClosePeer ( peerID )
639+ _ = stream . Conn ().Close ( )
640640 return
641641 }
642642
@@ -1121,7 +1121,7 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
11211121 peerAddrs , err := s .peerMultiaddrs (ctx , peerID )
11221122 if err != nil {
11231123 _ = handshakeStream .Reset ()
1124- _ = s . host . Network ().ClosePeer ( peerID )
1124+ _ = stream . Conn ().Close ( )
11251125 return nil , fmt .Errorf ("build peer multiaddrs: %w" , err )
11261126 }
11271127
@@ -1130,7 +1130,7 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
11301130 observedAddrs , err = buildFullMAs ([]ma.Multiaddr {stream .Conn ().RemoteMultiaddr ()}, peerID )
11311131 if err != nil {
11321132 _ = handshakeStream .Reset ()
1133- _ = s . host . Network ().ClosePeer ( peerID )
1133+ _ = stream . Conn ().Close ( )
11341134 return nil , fmt .Errorf ("build peer multiaddrs fallback: %w" , err )
11351135 }
11361136 }
@@ -1142,13 +1142,13 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
11421142 )
11431143 if err != nil {
11441144 _ = handshakeStream .Reset ()
1145- _ = s . host . Network ().ClosePeer ( info . ID )
1145+ _ = stream . Conn ().Close ( )
11461146 return nil , fmt .Errorf ("handshake: %w" , err )
11471147 }
11481148
11491149 if ! i .FullNode {
11501150 _ = handshakeStream .Reset ()
1151- _ = s . host . Network ().ClosePeer ( info . ID )
1151+ _ = stream . Conn ().Close ( )
11521152 return nil , p2p .ErrDialLightNode
11531153 }
11541154
@@ -1159,7 +1159,7 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
11591159 s .logger .Debug ("blocklisting: exists failed" , "peer_id" , info .ID , "error" , err )
11601160 s .logger .Error (nil , "internal error while connecting with peer" , "peer_id" , info .ID )
11611161 _ = handshakeStream .Reset ()
1162- _ = s . host . Network ().ClosePeer ( info . ID )
1162+ _ = stream . Conn ().Close ( )
11631163 return nil , err
11641164 }
11651165
@@ -1172,7 +1172,8 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
11721172
11731173 if exists := s .peers .addIfNotExists (stream .Conn (), overlay , i .FullNode ); exists {
11741174 if err := handshakeStream .FullClose (); err != nil {
1175- _ = s .Disconnect (overlay , "failed closing handshake stream after connect" )
1175+ // Only close the new (duplicate) connection; keep existing healthy sessions intact.
1176+ _ = stream .Conn ().Close ()
11761177 return nil , fmt .Errorf ("peer exists, full close: %w" , err )
11771178 }
11781179
0 commit comments