github.com/cristalhq/netx@v0.0.0-20221116164110-442313ef3309/listener_darwin.go (about) 1 //go:build darwin 2 3 package netx 4 5 import "syscall" 6 7 func newSocketCloexec(domain, typ, proto int) (int, error) { 8 return newSocketCloexecDefault(domain, typ, proto) 9 } 10 11 func setKeepAlive(fd, secs int) error { 12 if err := newError("setsockopt", syscall.SetsockoptInt(fd, syscall.SOL_SOCKET, syscall.SO_KEEPALIVE, 1)); err != nil { 13 return err 14 } 15 16 err := newError("setsockopt", syscall.SetsockoptInt(fd, syscall.IPPROTO_TCP, syscall.TCP_KEEPINTVL, secs)) 17 switch err { 18 case nil, syscall.ENOPROTOOPT: // OS X 10.7 and earlier don't support this option 19 return newError("setsockopt", syscall.SetsockoptInt(fd, syscall.IPPROTO_TCP, syscall.TCP_KEEPALIVE, secs)) 20 default: 21 return err 22 } 23 }