From 307baecee6ef4c1824ef9c39845ae6f12e4e037f Mon Sep 17 00:00:00 2001 From: Paul Nasrat Date: Thu, 7 Aug 2014 11:22:15 +1000 Subject: go.blog/context: userip support for IPv6 host/port. Makes example usable on IPv6 systems eg where localhost is ::1. Fixes golang/go#8486. LGTM=adg R=golang-codereviews, dave, adg CC=golang-codereviews, sameer https://golang.org/cl/117530044 --- content/context/userip/userip.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'content/context') diff --git a/content/context/userip/userip.go b/content/context/userip/userip.go index ba3851e..616dd04 100644 --- a/content/context/userip/userip.go +++ b/content/context/userip/userip.go @@ -6,15 +6,18 @@ import ( "fmt" "net" "net/http" - "strings" "code.google.com/p/go.net/context" ) // FromRequest extracts the user IP address from req, if present. func FromRequest(req *http.Request) (net.IP, error) { - s := strings.SplitN(req.RemoteAddr, ":", 2) - userIP := net.ParseIP(s[0]) + ip, _, err := net.SplitHostPort(req.RemoteAddr) + if err != nil { + return nil, fmt.Errorf("userip: %q is not IP:port", req.RemoteAddr) + } + + userIP := net.ParseIP(ip) if userIP == nil { return nil, fmt.Errorf("userip: %q is not IP:port", req.RemoteAddr) } -- cgit v1.2.3