From: Matt Joiner Date: Fri, 26 Dec 2014 06:16:20 +0000 (+1100) Subject: util.Addr* funcs: Add optimizations for *net.UDPAddr X-Git-Tag: v1.0.0~1382 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=caa389784adf6b18b1a685eca6cbcfc0691a2f22;p=btrtrc.git util.Addr* funcs: Add optimizations for *net.UDPAddr --- 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) }