@@ -651,7 +651,7 @@ func (s *Service) handleIncoming(stream network.Stream) {
651651 s .logger .Debug ("stream handler: handshake: build remote multiaddrs" , "peer_id" , peerID , "error" , err )
652652 s .logger .Error (nil , "stream handler: handshake: build remote multiaddrs" , "peer_id" , peerID )
653653 _ = handshakeStream .Reset ()
654- _ = s . host . Network ().ClosePeer ( peerID )
654+ _ = stream . Conn ().Close ( )
655655 return
656656 }
657657
@@ -665,7 +665,7 @@ func (s *Service) handleIncoming(stream network.Stream) {
665665 s .logger .Debug ("stream handler: handshake: handle failed" , "peer_id" , peerID , "error" , err )
666666 s .logger .Error (nil , "stream handler: handshake: handle failed" , "peer_id" , peerID )
667667 _ = handshakeStream .Reset ()
668- _ = s . host . Network ().ClosePeer ( peerID )
668+ _ = stream . Conn ().Close ( )
669669 return
670670 }
671671
@@ -1066,7 +1066,7 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
10661066 peerMultiaddrs , err := s .peerMultiaddrs (ctx , peerID )
10671067 if err != nil {
10681068 _ = handshakeStream .Reset ()
1069- _ = s . host . Network ().ClosePeer ( peerID )
1069+ _ = stream . Conn ().Close ( )
10701070 return nil , fmt .Errorf ("build peer multiaddrs: %w" , err )
10711071 }
10721072
@@ -1078,13 +1078,13 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
10781078 )
10791079 if err != nil {
10801080 _ = handshakeStream .Reset ()
1081- _ = s . host . Network ().ClosePeer ( info . ID )
1081+ _ = stream . Conn ().Close ( )
10821082 return nil , fmt .Errorf ("handshake: %w" , err )
10831083 }
10841084
10851085 if ! i .FullNode {
10861086 _ = handshakeStream .Reset ()
1087- _ = s . host . Network ().ClosePeer ( info . ID )
1087+ _ = stream . Conn ().Close ( )
10881088 return nil , p2p .ErrDialLightNode
10891089 }
10901090
@@ -1095,7 +1095,7 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
10951095 s .logger .Debug ("blocklisting: exists failed" , "peer_id" , info .ID , "error" , err )
10961096 s .logger .Error (nil , "internal error while connecting with peer" , "peer_id" , info .ID )
10971097 _ = handshakeStream .Reset ()
1098- _ = s . host . Network ().ClosePeer ( info . ID )
1098+ _ = stream . Conn ().Close ( )
10991099 return nil , err
11001100 }
11011101
@@ -1108,7 +1108,8 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
11081108
11091109 if exists := s .peers .addIfNotExists (stream .Conn (), overlay , i .FullNode ); exists {
11101110 if err := handshakeStream .FullClose (); err != nil {
1111- _ = s .Disconnect (overlay , "failed closing handshake stream after connect" )
1111+ // Only close the new (duplicate) connection; keep existing healthy sessions intact.
1112+ _ = stream .Conn ().Close ()
11121113 return nil , fmt .Errorf ("peer exists, full close: %w" , err )
11131114 }
11141115
0 commit comments