Reviewers:
golang-dev_googlegroups.com,
Message:
Hello
golan...@googlegroups.com (cc:
golan...@googlegroups.com),
I'd like you to review this change to
https://code.google.com/p/go
Description:
net: fix ResolveIPAddr for IPv6 address enclosed in square brackets
Fixes issue 3837.
Please review this at
http://codereview.appspot.com/6431053/
Affected files:
M src/pkg/net/ipraw_test.go
M src/pkg/net/iprawsock.go
Index: src/pkg/net/ipraw_test.go
===================================================================
--- a/src/pkg/net/ipraw_test.go
+++ b/src/pkg/net/ipraw_test.go
@@ -14,6 +14,27 @@
"time"
)
+var resolveIPAddrTests = []struct {
+ net string
+ addr string
+}{
+ {"ip", "0.0.0.0"},
+ {"ip", "[::]"},
+ {"ip", "::"},
+ {"ip4", "0.0.0.0"},
+ {"ip6", "[::]"},
+ {"ip6", "::"},
+}
+
+func TestResolveIPAddr(t *testing.T) {
+ for _, tt := range resolveIPAddrTests {
+ _, err := ResolveIPAddr(
tt.net, tt.addr)
+ if err != nil {
+ t.Fatalf("ResolveIPAddr(%q, %q) failed: %v",
tt.net, tt.addr, err)
+ }
+ }
+}
+
var icmpTests = []struct {
net string
laddr string
Index: src/pkg/net/iprawsock.go
===================================================================
--- a/src/pkg/net/iprawsock.go
+++ b/src/pkg/net/iprawsock.go
@@ -46,6 +46,10 @@
if net != "" && net[len(net)-1] == '6' {
filter = ipv6only
}
+ // Can put brackets around host ...
+ if len(host) > 0 && host[0] == '[' && host[len(host)-1] == ']' {
+ host = host[1 : len(host)-1]
+ }
// Not an IP address. Try as a DNS name.
addrs, err1 := LookupHost(host)
if err1 != nil {