optimize FilterAddrs implementation

This commit is contained in:
Marten Seemann 2021-12-14 17:02:31 +04:00
parent 334b79e5a9
commit 6792670726

View File

@ -189,14 +189,14 @@ func (m *multiaddr) ValueForProtocol(code int) (value string, err error) {
// If all filters return true, the address is kept.
func FilterAddrs(a []Multiaddr, filters ...func(Multiaddr) bool) []Multiaddr {
b := make([]Multiaddr, 0, len(a))
addrloop:
for _, addr := range a {
good := true
for _, filter := range filters {
good = good && filter(addr)
}
if good {
b = append(b, addr)
if !filter(addr) {
continue addrloop
}
}
b = append(b, addr)
}
return b
}