aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mark_unix.go11
1 files changed, 9 insertions, 2 deletions
diff --git a/mark_unix.go b/mark_unix.go
index 0b9d7e0..f2b6f62 100644
--- a/mark_unix.go
+++ b/mark_unix.go
@@ -26,6 +26,7 @@ func init() {
}
func (bind *NativeBind) SetMark(mark uint32) error {
+ var operr error
if fwmarkIoctl == 0 {
return nil
}
@@ -35,8 +36,11 @@ func (bind *NativeBind) SetMark(mark uint32) error {
return err
}
err = fd.Control(func(fd uintptr) {
- err = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, fwmarkIoctl, int(mark))
+ operr = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, fwmarkIoctl, int(mark))
})
+ if err == nil {
+ err = operr
+ }
if err != nil {
return err
}
@@ -47,8 +51,11 @@ func (bind *NativeBind) SetMark(mark uint32) error {
return err
}
err = fd.Control(func(fd uintptr) {
- err = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, fwmarkIoctl, int(mark))
+ operr = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, fwmarkIoctl, int(mark))
})
+ if err == nil {
+ err = operr
+ }
if err != nil {
return err
}