| 12345678910111213141516171819202122232425262728293031 |
- package network
-
- import (
- "fmt"
- "net"
- )
-
- func setCommonSocketOptions(conn *net.TCPConn, keepAliveConfig net.KeepAliveConfig) error {
- if err := applyKeepAlive(conn, keepAliveConfig); err != nil {
- return fmt.Errorf("cannot configure TCP keepalive: %w", err)
- }
-
- if err := conn.SetLinger(tcpLingerTimeout); err != nil {
- return fmt.Errorf("cannot set TCP linger timeout: %w", err)
- }
-
- rawConn, err := conn.SyscallConn()
- if err != nil {
- return fmt.Errorf("cannot get underlying raw connection: %w", err)
- }
-
- if err := setSocketReuseAddrPort(rawConn); err != nil {
- return fmt.Errorf("cannot setup SO_REUSEADDR/PORT: %w", err)
- }
-
- setCongestionControl(rawConn)
- setTCPUserTimeout(rawConn, keepAliveConfig)
- setNotSentLowat(rawConn)
-
- return nil
- }
|