1234567891011121314151617181920212223242526272829303132 |
- // Copyright 2009 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package net
- import "syscall"
- func maxListenerBacklog() int {
- fd, err := open("/proc/sys/net/core/somaxconn")
- if err != nil {
- return syscall.SOMAXCONN
- }
- defer fd.close()
- l, ok := fd.readLine()
- if !ok {
- return syscall.SOMAXCONN
- }
- f := getFields(l)
- n, _, ok := dtoi(f[0], 0)
- if n == 0 || !ok {
- return syscall.SOMAXCONN
- }
- // Linux stores the backlog in a uint16.
- // Truncate number to avoid wrapping.
- // See issue 5030.
- if n > 1<<16-1 {
- n = 1<<16 - 1
- }
- return n
- }
|