Properly bubble up setsockopt error from closure

This commit is contained in:
Jason A. Donenfeld 2018-12-25 22:56:36 +01:00
parent 8fde8334dc
commit 6e61c369e8

View file

@ -26,6 +26,7 @@ func init() {
} }
func (bind *NativeBind) SetMark(mark uint32) error { func (bind *NativeBind) SetMark(mark uint32) error {
var operr error
if fwmarkIoctl == 0 { if fwmarkIoctl == 0 {
return nil return nil
} }
@ -35,8 +36,11 @@ func (bind *NativeBind) SetMark(mark uint32) error {
return err return err
} }
err = fd.Control(func(fd uintptr) { 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 { if err != nil {
return err return err
} }
@ -47,8 +51,11 @@ func (bind *NativeBind) SetMark(mark uint32) error {
return err return err
} }
err = fd.Control(func(fd uintptr) { 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 { if err != nil {
return err return err
} }