Fix: control should return error

This commit is contained in:
xjasonlyu
2021-11-27 13:27:44 +08:00
parent 6bb44f9eb1
commit cf557f0eb1
3 changed files with 34 additions and 16 deletions

View File

@@ -6,10 +6,16 @@ import (
"golang.org/x/sys/unix"
)
func setMark(i int) controlFunc {
return func(_, _ string, c syscall.RawConn) error {
return c.Control(func(fd uintptr) {
unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_MARK, i)
func setMark(m int) controlFunc {
return func(_, _ string, c syscall.RawConn) (err error) {
var innerErr error
err = c.Control(func(fd uintptr) {
innerErr = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_MARK, m)
})
if innerErr != nil {
err = innerErr
}
return
}
}