From: Jason A. Donenfeld Date: Tue, 25 Dec 2018 21:56:36 +0000 (+0100) Subject: Properly bubble up setsockopt error from closure X-Git-Tag: 0.0.20190409~127 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e61c369e8bf934688aeadae86f04fe25566320a;p=thirdparty%2Fwireguard-go.git Properly bubble up setsockopt error from closure --- 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 }