mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
net: make Dial and Listen behavior consistent across over platforms
This CL changes the behavior of Dial and Listen API family. Previous Dial and Listen allow a combo of "tcp6" and IPv4 or IPv6 IPv4-mapped address as its argument, but it also makes slightly different behaviors between Linux and other platforms. This CL fixes such differences across over platforms by tweaking IP-level socket option IPV6_V6ONLY. Consequently new Dial and Listen API family will reject arguments consists of "tcp6" and IPv4 or IPv6 IPv4-mapped address. This CL also adds a bit clarified unicast listener tests. Fixes #2581. R=rsc, minux.ma CC=golang-dev https://golang.org/cl/5677086
This commit is contained in:
parent
fae0d35043
commit
b5dc8724cb
13 changed files with 596 additions and 113 deletions
|
|
@ -128,19 +128,14 @@ func TestTCPServer(t *testing.T) {
|
|||
doTest(t, "tcp6", "[::]", "[::1]")
|
||||
doTest(t, "tcp6", "[::1]", "[::1]")
|
||||
}
|
||||
if supportsIPv6 && supportsIPv4map {
|
||||
if supportsIPv4map {
|
||||
doTest(t, "tcp", "[::ffff:0.0.0.0]", "127.0.0.1")
|
||||
doTest(t, "tcp", "[::]", "127.0.0.1")
|
||||
doTest(t, "tcp4", "[::ffff:0.0.0.0]", "127.0.0.1")
|
||||
doTest(t, "tcp6", "", "127.0.0.1")
|
||||
doTest(t, "tcp6", "[::ffff:0.0.0.0]", "127.0.0.1")
|
||||
doTest(t, "tcp6", "[::]", "127.0.0.1")
|
||||
doTest(t, "tcp", "127.0.0.1", "[::ffff:127.0.0.1]")
|
||||
doTest(t, "tcp", "[::ffff:127.0.0.1]", "127.0.0.1")
|
||||
doTest(t, "tcp4", "127.0.0.1", "[::ffff:127.0.0.1]")
|
||||
doTest(t, "tcp4", "[::ffff:127.0.0.1]", "127.0.0.1")
|
||||
doTest(t, "tcp6", "127.0.0.1", "[::ffff:127.0.0.1]")
|
||||
doTest(t, "tcp6", "[::ffff:127.0.0.1]", "127.0.0.1")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -215,7 +210,7 @@ func TestUDPServer(t *testing.T) {
|
|||
for _, isEmpty := range []bool{false, true} {
|
||||
doTestPacket(t, "udp", "0.0.0.0", "127.0.0.1", isEmpty)
|
||||
doTestPacket(t, "udp", "", "127.0.0.1", isEmpty)
|
||||
if supportsIPv6 && supportsIPv4map {
|
||||
if supportsIPv4map {
|
||||
doTestPacket(t, "udp", "[::]", "[::ffff:127.0.0.1]", isEmpty)
|
||||
doTestPacket(t, "udp", "[::]", "127.0.0.1", isEmpty)
|
||||
doTestPacket(t, "udp", "0.0.0.0", "[::ffff:127.0.0.1]", isEmpty)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue