]> Sergey Matveev's repositories - btrtrc.git/blobdiff - netip-addrport.go
Handle more PeerRemoteAddr variants when calculating dial addr
[btrtrc.git] / netip-addrport.go
index cf9edfd5ed753e001e9f9d4713753be35c5d9e8e..4e2dc94d2b3686997d60b8924005064d849d8a90 100644 (file)
@@ -2,12 +2,15 @@ package torrent
 
 import (
        "fmt"
-       "net"
        "net/netip"
 
        "github.com/anacrolix/dht/v2/krpc"
 )
 
+type addrPorter interface {
+       AddrPort() netip.AddrPort
+}
+
 func ipv4AddrPortFromKrpcNodeAddr(na krpc.NodeAddr) (_ netip.AddrPort, err error) {
        ip4 := na.IP.To4()
        if ip4 == nil {
@@ -32,9 +35,7 @@ func ipv6AddrPortFromKrpcNodeAddr(na krpc.NodeAddr) (_ netip.AddrPort, err error
 
 func addrPortFromPeerRemoteAddr(pra PeerRemoteAddr) (netip.AddrPort, error) {
        switch v := pra.(type) {
-       case *net.TCPAddr:
-               return v.AddrPort(), nil
-       case *net.UDPAddr:
+       case addrPorter:
                return v.AddrPort(), nil
        case netip.AddrPort:
                return v, nil