From caa389784adf6b18b1a685eca6cbcfc0691a2f22 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 26 Dec 2014 17:16:20 +1100 Subject: [PATCH] util.Addr* funcs: Add optimizations for *net.UDPAddr --- util/addr.go | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/util/addr.go b/util/addr.go index a91dec3f..b6ec49e1 100644 --- a/util/addr.go +++ b/util/addr.go @@ -7,21 +7,31 @@ import ( // Extracts the port as an integer from an address string. func AddrPort(addr net.Addr) int { - _, port, err := net.SplitHostPort(addr.String()) - if err != nil { - panic(err) + switch raw := addr.(type) { + case *net.UDPAddr: + return raw.Port + default: + _, port, err := net.SplitHostPort(addr.String()) + if err != nil { + panic(err) + } + i64, err := strconv.ParseInt(port, 0, 0) + if err != nil { + panic(err) + } + return int(i64) } - i64, err := strconv.ParseInt(port, 0, 0) - if err != nil { - panic(err) - } - return int(i64) } func AddrIP(addr net.Addr) net.IP { - host, _, err := net.SplitHostPort(addr.String()) - if err != nil { - panic(err) + switch raw := addr.(type) { + case *net.UDPAddr: + return raw.IP + default: + host, _, err := net.SplitHostPort(addr.String()) + if err != nil { + panic(err) + } + return net.ParseIP(host) } - return net.ParseIP(host) } -- 2.44.0