From d88c12caa70d2bcb0752558ea394a37b9693725d Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Tue, 27 Jan 2015 20:33:13 +0000 Subject: [PATCH] improve peer gc efficiency Instead of separately calculating routes to every individual peer, carry out one calculation for routes to all peers. Same as unicast routes except taking into account asymmetric connections. --- router/peers.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/router/peers.go b/router/peers.go index e7c5ae53..3af3546a 100644 --- a/router/peers.go +++ b/router/peers.go @@ -147,9 +147,9 @@ func (peers *Peers) fetchAlias(peer *Peer) (*Peer, bool) { func (peers *Peers) garbageCollect() []*Peer { removed := []*Peer{} + _, reachable := peers.ourself.Routes(nil, false) for name, peer := range peers.table { - found, _ := peers.ourself.Routes(peer, false) - if !found && !peer.IsLocallyReferenced() { + if _, found := reachable[peer.Name]; !found && !peer.IsLocallyReferenced() { delete(peers.table, name) peers.onGC(peer) removed = append(removed, peer)