From 2daa86bd3c203ec1213c1da68567ea05b88ebc50 Mon Sep 17 00:00:00 2001 From: anonpenguin Date: Sat, 9 Aug 2025 12:01:30 +0300 Subject: [PATCH] refactor: remove legacy peer discovery and connectivity code --- pkg/client/anchat_connectivity.go | 121 ------------------------------ pkg/client/mdns_discovery.go | 38 ---------- 2 files changed, 159 deletions(-) delete mode 100644 pkg/client/anchat_connectivity.go delete mode 100644 pkg/client/mdns_discovery.go diff --git a/pkg/client/anchat_connectivity.go b/pkg/client/anchat_connectivity.go deleted file mode 100644 index cd5658c..0000000 --- a/pkg/client/anchat_connectivity.go +++ /dev/null @@ -1,121 +0,0 @@ -package client - -import ( - "context" - "time" - - "go.uber.org/zap" -) - -// ensureAnchatPeerConnectivity ensures Anchat clients can discover each other through bootstrap -func (c *Client) ensureAnchatPeerConnectivity() { - ticker := time.NewTicker(2 * time.Second) - defer ticker.Stop() - - for i := 0; i < 30; i++ { // Run for ~1 minute - <-ticker.C - - if !c.isConnected() { - return - } - - connectedPeers := c.host.Network().Peers() - - if c.dht != nil { - // Try to find peers through DHT routing table - routingPeers := c.dht.RoutingTable().ListPeers() - - for _, peerID := range routingPeers { - if peerID == c.host.ID() { - continue - } - - // Check already connected - alreadyConnected := false - for _, p := range connectedPeers { - if p == peerID { - alreadyConnected = true - break - } - } - - if !alreadyConnected { - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - peerInfo := c.host.Peerstore().PeerInfo(peerID) - - if len(peerInfo.Addrs) == 0 { - if found, err := c.dht.FindPeer(ctx, peerID); err == nil { - peerInfo = found - c.host.Peerstore().AddAddrs(peerInfo.ID, peerInfo.Addrs, time.Hour*24) - } - } - - if len(peerInfo.Addrs) > 0 { - if err := c.host.Connect(ctx, peerInfo); err == nil { - c.logger.Info("Anchat discovered and connected to peer", - zap.String("peer", peerID.String()[:8]+"...")) - - if added, err := c.dht.RoutingTable().TryAddPeer(peerID, true, true); err == nil && added { - c.logger.Debug("Added new peer to DHT routing table", - zap.String("peer", peerID.String()[:8]+"...")) - } - - if c.libp2pPS != nil { - time.Sleep(100 * time.Millisecond) - _ = c.libp2pPS.ListPeers("") - } - } else { - c.logger.Debug("Failed to connect to discovered peer", - zap.String("peer", peerID.String()[:8]+"..."), - zap.Error(err)) - } - } - cancel() - } - } - - if len(routingPeers) == 0 { - for _, id := range connectedPeers { - if id != c.host.ID() { - if added, err := c.dht.RoutingTable().TryAddPeer(id, true, true); err == nil && added { - c.logger.Info("Force-added connected peer to DHT routing table", - zap.String("peer", id.String()[:8]+"...")) - } - } - } - c.dht.RefreshRoutingTable() - } - } - - // Reconnect to known peers not currently connected - allKnownPeers := c.host.Peerstore().Peers() - for _, id := range allKnownPeers { - if id == c.host.ID() { - continue - } - already := false - for _, p := range connectedPeers { - if p == id { already = true; break } - } - if !already { - ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) - pi := c.host.Peerstore().PeerInfo(id) - if len(pi.Addrs) > 0 { - if err := c.host.Connect(ctx, pi); err == nil { - c.logger.Info("Anchat reconnected to known peer", - zap.String("peer", id.String()[:8]+"...")) - if c.libp2pPS != nil { time.Sleep(100 * time.Millisecond); _ = c.libp2pPS.ListPeers("") } - } - } - cancel() - } - } - - if i%5 == 0 && len(connectedPeers) > 0 { - c.logger.Info("Anchat peer discovery progress", - zap.Int("iteration", i+1), - zap.Int("connected_peers", len(connectedPeers)), - zap.Int("known_peers", len(allKnownPeers))) - } - } -} diff --git a/pkg/client/mdns_discovery.go b/pkg/client/mdns_discovery.go deleted file mode 100644 index bf164f5..0000000 --- a/pkg/client/mdns_discovery.go +++ /dev/null @@ -1,38 +0,0 @@ -package client - -import ( - "context" - "time" - - "github.com/libp2p/go-libp2p/core/peer" - "github.com/libp2p/go-libp2p/p2p/discovery/mdns" - "go.uber.org/zap" -) - -// startMDNSDiscovery enables mDNS peer discovery for local network -func (c *Client) startMDNSDiscovery() { - mdnsService := mdns.NewMdnsService(c.host, "anchat-p2p", &discoveryNotifee{ client: c, logger: c.logger }) - if err := mdnsService.Start(); err != nil { - c.logger.Warn("Failed to start mDNS discovery", zap.Error(err)) - return - } - c.logger.Info("Started mDNS discovery for Anchat") -} - -// discoveryNotifee handles mDNS peer discovery notifications -type discoveryNotifee struct { - client *Client - logger *zap.Logger -} - -func (n *discoveryNotifee) HandlePeerFound(pi peer.AddrInfo) { - n.logger.Info("mDNS discovered Anchat peer", zap.String("peer", pi.ID.String()[:8]+"..."), zap.Int("addrs", len(pi.Addrs))) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - if err := n.client.host.Connect(ctx, pi); err != nil { - n.logger.Debug("Failed to connect to mDNS discovered peer", zap.String("peer", pi.ID.String()[:8]+"..."), zap.Error(err)) - } else { - n.logger.Info("Successfully connected to mDNS discovered peer", zap.String("peer", pi.ID.String()[:8]+"...")) - if n.client.libp2pPS != nil { _ = n.client.libp2pPS.ListPeers("") } - } -}