Patchwork libgo patch committed: Always define syscall.SO_REUSEPORT

login
register
mail settings
Submitter Ian Taylor
Date April 26, 2012, 4:26 a.m.
Message ID <mcr397rm835.fsf@dhcp-172-18-216-180.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/155153/
State New
Headers show

Comments

Ian Taylor - April 26, 2012, 4:26 a.m.
This patch to libgo ensures that syscall.SO_REUSEPORT is defined.  It
fixes the only use of it in the standard library to check whether it has
a valid value before using it.  This should fix the build on Solaris 9.
Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu.
Committed to mainline and 4.7 branch.

Ian

Patch

diff -r 5d6c324d2a05 libgo/go/net/sockopt_bsd.go
--- a/libgo/go/net/sockopt_bsd.go	Tue Apr 24 21:39:30 2012 -0700
+++ b/libgo/go/net/sockopt_bsd.go	Wed Apr 25 21:24:58 2012 -0700
@@ -53,9 +53,11 @@ 
 	// This option is supported only in descendants of 4.4BSD,
 	// to make an effective multicast application that requires
 	// quick draw possible.
-	err = syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEPORT, 1)
-	if err != nil {
-		return os.NewSyscallError("setsockopt", err)
+	if syscall.SO_REUSEPORT != 0 {
+		err = syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEPORT, 1)
+		if err != nil {
+			return os.NewSyscallError("setsockopt", err)
+		}
 	}
 	return nil
 }
diff -r 5d6c324d2a05 libgo/mksysinfo.sh
--- a/libgo/mksysinfo.sh	Tue Apr 24 21:39:30 2012 -0700
+++ b/libgo/mksysinfo.sh	Wed Apr 25 21:24:58 2012 -0700
@@ -264,7 +264,7 @@ 
   sed -e 's/^\(const \)_\(SHUT[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
 
 # The net package requires some const definitions.
-for m in IP_PKTINFO IPV6_V6ONLY IPPROTO_IPV6 IPV6_JOIN_GROUP IPV6_LEAVE_GROUP IPV6_TCLASS; do
+for m in IP_PKTINFO IPV6_V6ONLY IPPROTO_IPV6 IPV6_JOIN_GROUP IPV6_LEAVE_GROUP IPV6_TCLASS SO_REUSEPORT; do
   if ! grep "^const $m " ${OUT} >/dev/null 2>&1; then
     echo "const $m = 0" >> ${OUT}
   fi