aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/net/ipsock_posix.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/net/ipsock_posix.go')
-rw-r--r--libgo/go/net/ipsock_posix.go15
1 files changed, 8 insertions, 7 deletions
diff --git a/libgo/go/net/ipsock_posix.go b/libgo/go/net/ipsock_posix.go
index 83eaf85..2bddd46 100644
--- a/libgo/go/net/ipsock_posix.go
+++ b/libgo/go/net/ipsock_posix.go
@@ -101,10 +101,11 @@ func probeIPv6Stack() (supportsIPv6, supportsIPv4map bool) {
//
// 1. A wild-wild listen, "tcp" + ""
// If the platform supports both IPv6 and IPv6 IPv4-mapping
-// capabilities, we assume that the user want to listen on
-// both IPv4 and IPv6 wildcard address over an AF_INET6
-// socket with IPV6_V6ONLY=0. Otherwise we prefer an IPv4
-// wildcard address listen over an AF_INET socket.
+// capabilities, or does not support IPv4, we assume that
+// the user wants to listen on both IPv4 and IPv6 wildcard
+// addresses over an AF_INET6 socket with IPV6_V6ONLY=0.
+// Otherwise we prefer an IPv4 wildcard address listen over
+// an AF_INET socket.
//
// 2. A wild-ipv4wild listen, "tcp" + "0.0.0.0"
// Same as 1.
@@ -137,7 +138,7 @@ func favoriteAddrFamily(net string, laddr, raddr sockaddr, mode string) (family
}
if mode == "listen" && (laddr == nil || laddr.isWildcard()) {
- if supportsIPv4map {
+ if supportsIPv4map || !supportsIPv4 {
return syscall.AF_INET6, false
}
if laddr == nil {
@@ -155,9 +156,9 @@ func favoriteAddrFamily(net string, laddr, raddr sockaddr, mode string) (family
// Internet sockets (TCP, UDP, IP)
-func internetSocket(net string, laddr, raddr sockaddr, deadline time.Time, sotype, proto int, mode string) (fd *netFD, err error) {
+func internetSocket(net string, laddr, raddr sockaddr, deadline time.Time, sotype, proto int, mode string, cancel <-chan struct{}) (fd *netFD, err error) {
family, ipv6only := favoriteAddrFamily(net, laddr, raddr, mode)
- return socket(net, family, sotype, proto, ipv6only, laddr, raddr, deadline)
+ return socket(net, family, sotype, proto, ipv6only, laddr, raddr, deadline, cancel)
}
func ipToSockaddr(family int, ip IP, port int, zone string) (syscall.Sockaddr, error) {