diff --git a/src/pkg/net/sock_posix.go b/src/pkg/net/sock_posix.go index c8a94f5047..e2487c805e 100644 --- a/src/pkg/net/sock_posix.go +++ b/src/pkg/net/sock_posix.go @@ -25,7 +25,8 @@ func socket(net string, f, t, p int, ipv6only bool, ulsa, ursa syscall.Sockaddr, return nil, err } - if ulsa != nil { + // This socket is used by a listener. + if ulsa != nil && ursa == nil { // We provide a socket that listens to a wildcard // address with reusable UDP port when the given ulsa // is an appropriate UDP multicast address prefix. @@ -37,6 +38,9 @@ func socket(net string, f, t, p int, ipv6only bool, ulsa, ursa syscall.Sockaddr, closesocket(s) return nil, err } + } + + if ulsa != nil { if err = syscall.Bind(s, ulsa); err != nil { closesocket(s) return nil, err @@ -48,6 +52,7 @@ func socket(net string, f, t, p int, ipv6only bool, ulsa, ursa syscall.Sockaddr, return nil, err } + // This socket is used by a dialer. if ursa != nil { if !deadline.IsZero() { setWriteDeadline(fd, deadline)