network: register connected addr in handleVersionCmd()
Prevent useless attempts to connect to this peer if the peer has already made a connection to us.
This commit is contained in:
parent
9eafec0d1d
commit
eb4ec61b8b
3 changed files with 6 additions and 3 deletions
|
@ -18,6 +18,7 @@ type Discoverer interface {
|
||||||
RequestRemote(int)
|
RequestRemote(int)
|
||||||
RegisterBadAddr(string)
|
RegisterBadAddr(string)
|
||||||
RegisterGoodAddr(string)
|
RegisterGoodAddr(string)
|
||||||
|
RegisterConnectedAddr(string)
|
||||||
UnregisterConnectedAddr(string)
|
UnregisterConnectedAddr(string)
|
||||||
UnconnectedPeers() []string
|
UnconnectedPeers() []string
|
||||||
BadPeers() []string
|
BadPeers() []string
|
||||||
|
@ -153,8 +154,8 @@ func (d *DefaultDiscovery) UnregisterConnectedAddr(s string) {
|
||||||
d.lock.Unlock()
|
d.lock.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
// registerConnectedAddr tells discoverer that given address is now connected.
|
// RegisterConnectedAddr tells discoverer that given address is now connected.
|
||||||
func (d *DefaultDiscovery) registerConnectedAddr(addr string) {
|
func (d *DefaultDiscovery) RegisterConnectedAddr(addr string) {
|
||||||
d.lock.Lock()
|
d.lock.Lock()
|
||||||
delete(d.unconnectedAddrs, addr)
|
delete(d.unconnectedAddrs, addr)
|
||||||
d.connectedAddrs[addr] = true
|
d.connectedAddrs[addr] = true
|
||||||
|
@ -166,7 +167,7 @@ func (d *DefaultDiscovery) tryAddress(addr string) {
|
||||||
d.RegisterBadAddr(addr)
|
d.RegisterBadAddr(addr)
|
||||||
d.RequestRemote(1)
|
d.RequestRemote(1)
|
||||||
} else {
|
} else {
|
||||||
d.registerConnectedAddr(addr)
|
d.RegisterConnectedAddr(addr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,6 +136,7 @@ func (d testDiscovery) BackFill(addrs ...string) {}
|
||||||
func (d testDiscovery) PoolCount() int { return 0 }
|
func (d testDiscovery) PoolCount() int { return 0 }
|
||||||
func (d testDiscovery) RegisterBadAddr(string) {}
|
func (d testDiscovery) RegisterBadAddr(string) {}
|
||||||
func (d testDiscovery) RegisterGoodAddr(string) {}
|
func (d testDiscovery) RegisterGoodAddr(string) {}
|
||||||
|
func (d testDiscovery) RegisterConnectedAddr(string) {}
|
||||||
func (d testDiscovery) UnregisterConnectedAddr(string) {}
|
func (d testDiscovery) UnregisterConnectedAddr(string) {}
|
||||||
func (d testDiscovery) UnconnectedPeers() []string { return []string{} }
|
func (d testDiscovery) UnconnectedPeers() []string { return []string{} }
|
||||||
func (d testDiscovery) RequestRemote(n int) {}
|
func (d testDiscovery) RequestRemote(n int) {}
|
||||||
|
|
|
@ -348,6 +348,7 @@ func (s *Server) handleVersionCmd(p Peer, version *payload.Version) error {
|
||||||
return errIdenticalID
|
return errIdenticalID
|
||||||
}
|
}
|
||||||
peerAddr := p.PeerAddr().String()
|
peerAddr := p.PeerAddr().String()
|
||||||
|
s.discovery.RegisterConnectedAddr(peerAddr)
|
||||||
s.lock.RLock()
|
s.lock.RLock()
|
||||||
for peer := range s.peers {
|
for peer := range s.peers {
|
||||||
if p == peer {
|
if p == peer {
|
||||||
|
|
Loading…
Reference in a new issue