44 "context"
55 "errors"
66 "fmt"
7- "net"
87 "strconv"
98 "testing"
109 "time"
@@ -182,7 +181,16 @@ func (p2pServer *P2PServer) Init() error {
182181 if p2pServer .host != nil {
183182 for _ , peer := range p2pServer .host .Network ().Peers () {
184183 addrInfo := p2pServer .host .Peerstore ().PeerInfo (peer )
185- c <- addrInfo
184+ var goodPeer bool
185+ for _ , a := range addrInfo .Addrs {
186+ if isPublicAddr (a ) {
187+ goodPeer = true
188+ }
189+ }
190+
191+ if goodPeer {
192+ c <- addrInfo
193+ }
186194 }
187195 }
188196
@@ -192,6 +200,7 @@ func (p2pServer *P2PServer) Init() error {
192200 idht , err = kadDht .New (context .Background (), h , kadOptions ... )
193201 return idht , err
194202 }),
203+ libp2p .AddrsFactory (p2pServer .addrFactory ),
195204 }
196205
197206 p2p , err := libp2p .New (options ... )
@@ -398,6 +407,16 @@ func (p2pServer *P2PServer) SetStreamHandlerMatch(pid protocol.ID, matcher func(
398407 p2pServer .host .SetStreamHandlerMatch (pid , matcher , handler )
399408}
400409
410+ func (p2p * P2PServer ) addrFactory (addrs []multiaddr.Multiaddr ) []multiaddr.Multiaddr {
411+ filteredAddrs := make ([]multiaddr.Multiaddr , 0 )
412+ for _ , addr := range addrs {
413+ if isPublicAddr (addr ) || isCircuitAddr (addr ) {
414+ filteredAddrs = append (filteredAddrs , addr )
415+ }
416+ }
417+ return filteredAddrs
418+ }
419+
401420func (p2p * P2PServer ) connectRegisteredPeers () {
402421 witnesses , _ := p2p .witnessDb .GetLastestWitnesses ()
403422
@@ -420,17 +439,14 @@ func (p2p *P2PServer) connectRegisteredPeers() {
420439 //Select
421440 for _ , peer := range witness .PeerAddrs {
422441 m , _ := multiaddr .NewMultiaddr (peer )
423- _ , err := m .ValueForProtocol (multiaddr .P_CIRCUIT )
424442
425443 // fmt.Println("circuitAddress", circuitAddress, err)
426- if err == nil {
444+ if isCircuitAddr ( m ) {
427445 selectedAddr = append (selectedAddr , m .Encapsulate (mp ))
428446 continue
429447 }
430- ipv4Address , err := m .ValueForProtocol (multiaddr .P_IP4 )
431448
432- ip := net .ParseIP (ipv4Address )
433- if ! ip .IsPrivate () && err != nil {
449+ if isPublicAddr (m ) {
434450 selectedAddr = append (selectedAddr , m .Encapsulate (mp ))
435451 continue
436452 }
0 commit comments