浏览代码

Enable NATPortMap by default, do not attempt to redial already connected

Ettore Di Giacinto 4 年之前
父节点
当前提交
0b29be67d7
共有 2 个文件被更改,包括 10 次插入5 次删除
  1. 9 5
      pkg/discovery/dht.go
  2. 1 0
      pkg/edgevpn/connection.go

+ 9 - 5
pkg/discovery/dht.go

@@ -9,6 +9,7 @@ import (
 
 
 	"github.com/libp2p/go-libp2p"
 	"github.com/libp2p/go-libp2p"
 	"github.com/libp2p/go-libp2p-core/host"
 	"github.com/libp2p/go-libp2p-core/host"
+	"github.com/libp2p/go-libp2p-core/network"
 	"github.com/libp2p/go-libp2p-core/peer"
 	"github.com/libp2p/go-libp2p-core/peer"
 	"github.com/libp2p/go-libp2p-core/routing"
 	"github.com/libp2p/go-libp2p-core/routing"
 	discovery "github.com/libp2p/go-libp2p-discovery"
 	discovery "github.com/libp2p/go-libp2p-discovery"
@@ -158,11 +159,14 @@ func (d *DHT) announceAndConnect(ctx context.Context, kademliaDHT *dht.IpfsDHT,
 		wg.Add(1)
 		wg.Add(1)
 		go func(a peer.AddrInfo) {
 		go func(a peer.AddrInfo) {
 			defer wg.Done()
 			defer wg.Done()
-			d.console.Sugar().Info("Found peer:", a)
-			if err := host.Connect(ctx, a); err != nil {
-				d.console.Sugar().Info("Failed connecting to", a)
-			} else {
-				d.console.Sugar().Info("Connected to:", a)
+
+			if host.Network().Connectedness(p.ID) != network.Connected {
+				d.console.Sugar().Info("Found peer:", a)
+				if err := host.Connect(ctx, a); err != nil {
+					d.console.Sugar().Info("Failed connecting to", a)
+				} else {
+					d.console.Sugar().Info("Connected to:", a)
+				}
 			}
 			}
 		}(p)
 		}(p)
 
 

+ 1 - 0
pkg/edgevpn/connection.go

@@ -54,6 +54,7 @@ func (e *EdgeVPN) genHost(ctx context.Context) (host.Host, error) {
 		libp2p.Identity(prvKey),
 		libp2p.Identity(prvKey),
 		libp2p.EnableAutoRelay(),
 		libp2p.EnableAutoRelay(),
 		libp2p.EnableNATService(),
 		libp2p.EnableNATService(),
+		libp2p.NATPortMap(),
 		libp2p.ConnectionGater(cg),
 		libp2p.ConnectionGater(cg),
 	}
 	}