Fix SO_REUSEPORT for macOS #626
This commit is contained in:
@@ -0,0 +1,24 @@
|
|||||||
|
package mdns
|
||||||
|
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
func SetsockoptInt(fd uintptr, level, opt int, value int) (err error) {
|
||||||
|
// change SO_REUSEADDR and REUSEPORT flags simultaneously for BSD-like OS
|
||||||
|
// https://github.com/AlexxIT/go2rtc/issues/626
|
||||||
|
// https://stackoverflow.com/questions/14388706/how-do-so-reuseaddr-and-so-reuseport-differ/14388707
|
||||||
|
if opt == syscall.SO_REUSEADDR {
|
||||||
|
if err = syscall.SetsockoptInt(int(fd), level, opt, value); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
opt = syscall.SO_REUSEPORT
|
||||||
|
}
|
||||||
|
|
||||||
|
return syscall.SetsockoptInt(int(fd), level, opt, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetsockoptIPMreq(fd uintptr, level, opt int, mreq *syscall.IPMreq) (err error) {
|
||||||
|
return syscall.SetsockoptIPMreq(int(fd), level, opt, mreq)
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
//go:build darwin || linux
|
|
||||||
|
|
||||||
package mdns
|
package mdns
|
||||||
|
|
||||||
import "syscall"
|
import (
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
func SetsockoptInt(fd uintptr, level, opt int, value int) (err error) {
|
func SetsockoptInt(fd uintptr, level, opt int, value int) (err error) {
|
||||||
return syscall.SetsockoptInt(int(fd), level, opt, value)
|
return syscall.SetsockoptInt(int(fd), level, opt, value)
|
||||||
Reference in New Issue
Block a user