]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
Properly bubble up setsockopt error from closure
authorJason A. Donenfeld <Jason@zx2c4.com>
Tue, 25 Dec 2018 21:56:36 +0000 (22:56 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 25 Dec 2018 21:56:36 +0000 (22:56 +0100)
mark_unix.go

index 0b9d7e01bd0960ef54b7a342cd7fc445416f7ab0..f2b6f625f6ec5b7f5db4f2b4d449dc1fb8a65df2 100644 (file)
@@ -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
                }