lib: Factor out getting IP address from net.Addr (#8538)

... and add fast paths for common cases.
This commit is contained in:
greatroar
2022-09-14 08:44:46 +02:00
committed by GitHub
parent 6e768a8387
commit 8065cf7e97
7 changed files with 26 additions and 29 deletions
+3 -4
View File
@@ -18,6 +18,7 @@ import (
natpmp "github.com/jackpal/go-nat-pmp"
"github.com/syncthing/syncthing/lib/nat"
"github.com/syncthing/syncthing/lib/osutil"
"github.com/syncthing/syncthing/lib/util"
)
@@ -66,10 +67,8 @@ func Discover(ctx context.Context, renewal, timeout time.Duration) []nat.Device
conn, err := (&net.Dialer{}).DialContext(timeoutCtx, "udp", net.JoinHostPort(ip.String(), "5351"))
if err == nil {
conn.Close()
localIPAddress, _, err := net.SplitHostPort(conn.LocalAddr().String())
if err == nil {
localIP = net.ParseIP(localIPAddress)
} else {
localIP, err = osutil.IPFromAddr(conn.LocalAddr())
if localIP == nil {
l.Debugln("Failed to lookup local IP", err)
}
}