| 1234567891011121314151617181920212223242526272829 |
- //go:build !windows && !wasm
- package torrent
- import (
- "syscall"
- "golang.org/x/sys/unix"
- )
- func setReusePortSockOpts(fd uintptr) (err error) {
- // I would use libp2p/go-reuseport to do this here, but no surprise it's
- // implemented incorrectly.
- // Looks like we can get away with just REUSEPORT at least on Darwin, and probably by
- // extension BSDs and Linux.
- if false {
- err = syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1)
- if err != nil {
- return
- }
- }
- err = syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, unix.SO_REUSEPORT, 1)
- return
- }
- func setSockNoLinger(fd uintptr) (err error) {
- return syscall.SetsockoptLinger(int(fd), syscall.SOL_SOCKET, syscall.SO_LINGER, &lingerOffVal)
- }
|