| 12345678910111213141516171819202122232425262728 |
- //go:build linux || darwin
-
- package network
-
- import (
- "syscall"
-
- "golang.org/x/sys/unix"
- )
-
- // setNotSentLowat sets TCP_NOTSENT_LOWAT to value bytes. The option
- // limits the amount of unsent data queued in the kernel write buffer:
- // once the unsent backlog drops below the threshold, the socket becomes
- // writable again, applying back-pressure to the relay loop instead of
- // piling up data in kernel buffers. This reduces per-connection memory
- // and bufferbloat.
- //
- // A non-positive value disables the call, leaving the kernel default in
- // effect (no upper bound beyond SO_SNDBUF).
- func setNotSentLowat(conn syscall.RawConn, value int) {
- if value <= 0 {
- return
- }
-
- conn.Control(func(fd uintptr) { //nolint: errcheck
- unix.SetsockoptInt(int(fd), unix.IPPROTO_TCP, unix.TCP_NOTSENT_LOWAT, value) //nolint: errcheck
- })
- }
|