]> Cypherpunks repositories - gostls13.git/commitdiff
net: allow "" as a hint wildcard to Resolve{IP,UDP,TCP}Addr
authorMikio Hara <mikioh.mikioh@gmail.com>
Sat, 1 Dec 2012 05:49:54 +0000 (14:49 +0900)
committerMikio Hara <mikioh.mikioh@gmail.com>
Sat, 1 Dec 2012 05:49:54 +0000 (14:49 +0900)
Also fixes comments on ResolveIPAddr.

Fixes #4476.

R=bradfitz, golang-dev
CC=golang-dev
https://golang.org/cl/6854129

src/pkg/net/ipraw_test.go
src/pkg/net/iprawsock.go
src/pkg/net/tcp_test.go
src/pkg/net/tcpsock.go
src/pkg/net/udp_test.go
src/pkg/net/udpsock.go

index c2d024dab82ce7278de887b4cc7967f3b8182bd4..f21889fcbeaac96d9e4a7fcad2873254fd8c1a50 100644 (file)
@@ -29,6 +29,9 @@ var resolveIPAddrTests = []struct {
        {"ip6", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
        {"ip6:icmp", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
 
+       {"", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil}, // Go 1.0 behavior
+       {"", "::1", &IPAddr{IP: ParseIP("::1")}, nil},           // Go 1.0 behavior
+
        {"l2tp", "127.0.0.1", nil, UnknownNetworkError("l2tp")},
        {"l2tp:gre", "127.0.0.1", nil, UnknownNetworkError("l2tp:gre")},
        {"tcp", "1.2.3.4:123", nil, UnknownNetworkError("tcp")},
index 45ad697aa67776e99ee9b484fbda6d17d01dea84..13bfd62404a49a896d7dab9158b90d4a6e88c232 100644 (file)
@@ -24,9 +24,11 @@ func (a *IPAddr) String() string {
 
 // ResolveIPAddr parses addr as an IP address and resolves domain
 // names to numeric addresses on the network net, which must be
-// "ip", "ip4" or "ip6".  A literal IPv6 host address must be
-// enclosed in square brackets, as in "[::]".
+// "ip", "ip4" or "ip6".
 func ResolveIPAddr(net, addr string) (*IPAddr, error) {
+       if net == "" { // a hint wildcard for Go 1.0 undocumented behavior
+               net = "ip"
+       }
        afnet, _, err := parseDialNetwork(net)
        if err != nil {
                return nil, err
index e8588c686fbf23325c8206515298ee85f923304e..bca748827ce1226409289cb7bf3a5be59f3399a4 100644 (file)
@@ -130,6 +130,9 @@ var resolveTCPAddrTests = []struct {
        {"tcp", "[::1]:1", &TCPAddr{IP: ParseIP("::1"), Port: 1}, nil},
        {"tcp6", "[::1]:65534", &TCPAddr{IP: ParseIP("::1"), Port: 65534}, nil},
 
+       {"", "127.0.0.1:0", &TCPAddr{IP: IPv4(127, 0, 0, 1), Port: 0}, nil}, // Go 1.0 behavior
+       {"", "[::1]:0", &TCPAddr{IP: ParseIP("::1"), Port: 0}, nil},         // Go 1.0 behavior
+
        {"http", "127.0.0.1:0", nil, UnknownNetworkError("http")},
 }
 
index 0a72a534c7b428e2eaf9f99144bae11c06830c8f..d5158b22def5c00e5e199882b1013c213bbf6141 100644 (file)
@@ -31,6 +31,8 @@ func (a *TCPAddr) String() string {
 func ResolveTCPAddr(net, addr string) (*TCPAddr, error) {
        switch net {
        case "tcp", "tcp4", "tcp6":
+       case "": // a hint wildcard for Go 1.0 undocumented behavior
+               net = "tcp"
        default:
                return nil, UnknownNetworkError(net)
        }
index 7c69b3738f7546b51423a6a6af66d0eb5dd5c827..d3594b40a9e25e720b3c0ded562283ff412aac2c 100644 (file)
@@ -22,6 +22,9 @@ var resolveUDPAddrTests = []struct {
        {"udp", "[::1]:1", &UDPAddr{IP: ParseIP("::1"), Port: 1}, nil},
        {"udp6", "[::1]:65534", &UDPAddr{IP: ParseIP("::1"), Port: 65534}, nil},
 
+       {"", "127.0.0.1:0", &UDPAddr{IP: IPv4(127, 0, 0, 1), Port: 0}, nil}, // Go 1.0 behavior
+       {"", "[::1]:0", &UDPAddr{IP: ParseIP("::1"), Port: 0}, nil},         // Go 1.0 behavior
+
        {"sip", "127.0.0.1:0", nil, UnknownNetworkError("sip")},
 }
 
index e33c6f0a013eb96857ed51623d0e52a784b4cd70..6e5e902689b39a41f170c9fcbd2b2b11c40120d5 100644 (file)
@@ -35,6 +35,8 @@ func (a *UDPAddr) String() string {
 func ResolveUDPAddr(net, addr string) (*UDPAddr, error) {
        switch net {
        case "udp", "udp4", "udp6":
+       case "": // a hint wildcard for Go 1.0 undocumented behavior
+               net = "udp"
        default:
                return nil, UnknownNetworkError(net)
        }