]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix usages of eachListener() and make inlineable (#599)
authorYenForYang <YenForYang@users.noreply.github.com>
Mon, 13 Sep 2021 11:35:51 +0000 (06:35 -0500)
committerGitHub <noreply@github.com>
Mon, 13 Sep 2021 11:35:51 +0000 (21:35 +1000)
client.go

index e47aa0822cc52b3ecfc4199ad75fbe83a8a97f5b..4c1b292245d283506ede19a522524f7129d2e692 100644 (file)
--- a/client.go
+++ b/client.go
@@ -110,10 +110,11 @@ func (cl *Client) PeerID() PeerID {
 // numbers are the same, due to support for custom listeners. Returns zero if no port number is
 // found.
 func (cl *Client) LocalPort() (port int) {
-       cl.eachListener(func(l Listener) bool {
-               port = addrPortOrZero(l.Addr())
-               return port == 0
-       })
+       for i := 0; i < len(cl.listeners); i += 1 {
+               if port = addrPortOrZero(cl.listeners[i].Addr()); port != 0 {
+                       return
+               }
+       }
        return
 }
 
@@ -1436,13 +1437,15 @@ func (cl *Client) eachListener(f func(Listener) bool) {
 }
 
 func (cl *Client) findListener(f func(Listener) bool) (ret Listener) {
-       cl.eachListener(func(l Listener) bool {
-               ret = l
-               return !f(l)
-       })
-       return
+       for i := 0; i < len(cl.listeners); i += 1 {
+               if ret = cl.listeners[i]; f(ret) {
+                       return
+               }
+       }
+       return nil
 }
 
+
 func (cl *Client) publicIp(peer net.IP) net.IP {
        // TODO: Use BEP 10 to determine how peers are seeing us.
        if peer.To4() != nil {
@@ -1478,11 +1481,11 @@ func (cl *Client) publicAddr(peer net.IP) IpPort {
 // ListenAddrs addresses currently being listened to.
 func (cl *Client) ListenAddrs() (ret []net.Addr) {
        cl.lock()
-       defer cl.unlock()
-       cl.eachListener(func(l Listener) bool {
-               ret = append(ret, l.Addr())
-               return true
-       })
+       ret = make([]net.Addr, len(cl.listeners))
+       for i := 0; i < len(cl.listeners); i += 1 {
+               ret[i] = cl.listeners[i].Addr()
+       }
+       cl.unlock()
        return
 }