summaryrefslogtreecommitdiff
path: root/src/pkg/net/sock_bsd.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/net/sock_bsd.go')
-rw-r--r--src/pkg/net/sock_bsd.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/pkg/net/sock_bsd.go b/src/pkg/net/sock_bsd.go
index 3205f9404..d99349265 100644
--- a/src/pkg/net/sock_bsd.go
+++ b/src/pkg/net/sock_bsd.go
@@ -27,5 +27,11 @@ func maxListenerBacklog() int {
if n == 0 || err != nil {
return syscall.SOMAXCONN
}
+ // FreeBSD stores the backlog in a uint16, as does Linux.
+ // Assume the other BSDs do too. Truncate number to avoid wrapping.
+ // See issue 5030.
+ if n > 1<<16-1 {
+ n = 1<<16 - 1
+ }
return int(n)
}