diff --git a/multiaddr.go b/multiaddr.go index 4f046cb..b6b39f7 100644 --- a/multiaddr.go +++ b/multiaddr.go @@ -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 }