From 6e61c369e8bf934688aeadae86f04fe25566320a Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 25 Dec 2018 22:56:36 +0100 Subject: Properly bubble up setsockopt error from closure --- mark_unix.go | 11 +++++++++-- 1 file 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 } -- cgit v1.2.3-59-g8ed1b