refactor getPeers for locked scope
This commit is contained in:
parent
f36100a1f9
commit
7f690dcc68
|
@ -85,30 +85,13 @@ func (as *AmbientAutoNAT) background() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (as *AmbientAutoNAT) autodetect() {
|
func (as *AmbientAutoNAT) autodetect() {
|
||||||
if len(as.peers) == 0 {
|
peers := as.getPeers()
|
||||||
|
|
||||||
|
if len(peers) == 0 {
|
||||||
log.Debugf("skipping NAT auto detection; no autonat peers")
|
log.Debugf("skipping NAT auto detection; no autonat peers")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
as.mx.Lock()
|
|
||||||
peers := make([]peer.ID, 0, len(as.peers))
|
|
||||||
for p := range as.peers {
|
|
||||||
if len(as.host.Network().ConnsToPeer(p)) > 0 {
|
|
||||||
peers = append(peers, p)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(peers) == 0 {
|
|
||||||
// we don't have any open connections, try any autonat peer that we know about
|
|
||||||
for p := range as.peers {
|
|
||||||
peers = append(peers, p)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
as.mx.Unlock()
|
|
||||||
|
|
||||||
shufflePeers(peers)
|
|
||||||
|
|
||||||
for _, p := range peers {
|
for _, p := range peers {
|
||||||
cli := NewAutoNATClient(as.host, p)
|
cli := NewAutoNATClient(as.host, p)
|
||||||
ctx, cancel := context.WithTimeout(as.ctx, AutoNATRequestTimeout)
|
ctx, cancel := context.WithTimeout(as.ctx, AutoNATRequestTimeout)
|
||||||
|
@ -141,6 +124,33 @@ func (as *AmbientAutoNAT) autodetect() {
|
||||||
as.mx.Unlock()
|
as.mx.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (as *AmbientAutoNAT) getPeers() []peer.ID {
|
||||||
|
as.mx.Lock()
|
||||||
|
defer as.mx.Unlock()
|
||||||
|
|
||||||
|
if len(as.peers) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
peers := make([]peer.ID, 0, len(as.peers))
|
||||||
|
for p := range as.peers {
|
||||||
|
if len(as.host.Network().ConnsToPeer(p)) > 0 {
|
||||||
|
peers = append(peers, p)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(peers) == 0 {
|
||||||
|
// we don't have any open connections, try any autonat peer that we know about
|
||||||
|
for p := range as.peers {
|
||||||
|
peers = append(peers, p)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
shufflePeers(peers)
|
||||||
|
|
||||||
|
return peers
|
||||||
|
}
|
||||||
|
|
||||||
func shufflePeers(peers []peer.ID) {
|
func shufflePeers(peers []peer.ID) {
|
||||||
for i := range peers {
|
for i := range peers {
|
||||||
j := rand.Intn(i + 1)
|
j := rand.Intn(i + 1)
|
||||||
|
|
Loading…
Reference in New Issue