refactor: remove legacy peer discovery and connectivity code

This commit is contained in:
anonpenguin 2025-08-09 12:01:30 +03:00
parent 6301ed9182
commit 2daa86bd3c
2 changed files with 0 additions and 159 deletions

View File

@ -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)))
}
}
}

View File

@ -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("") }
}
}