Skip to content

Commit

Permalink
trifle: refine the usage of os.NewSyscallError
Browse files Browse the repository at this point in the history
  • Loading branch information
panjf2000 committed Jul 18, 2020
1 parent 0c1bcb3 commit 2d54d80
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 32 deletions.
4 changes: 2 additions & 2 deletions acceptor_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ func (svr *server) acceptNewConnection(fd int) error {
}
return os.NewSyscallError("accept", err)
}
if err := unix.SetNonblock(nfd, true); err != nil {
return os.NewSyscallError("fcntl nonblock", err)
if err = os.NewSyscallError("fcntl nonblock", unix.SetNonblock(nfd, true)); err != nil {
return err
}
el := svr.subEventLoopSet.next(nfd)
c := newTCPConn(nfd, el, sa)
Expand Down
4 changes: 2 additions & 2 deletions eventloop_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ func (el *eventloop) loopAccept(fd int) error {
}
return os.NewSyscallError("accept", err)
}
if err = unix.SetNonblock(nfd, true); err != nil {
return os.NewSyscallError("fcntl nonblock", err)
if err = os.NewSyscallError("fcntl nonblock", unix.SetNonblock(nfd, true)); err != nil {
return err
}
c := newTCPConn(nfd, el, sa)
if err = el.poller.AddRead(c.fd); err == nil {
Expand Down
4 changes: 2 additions & 2 deletions internal/netpoll/epoll.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ func OpenPoller() (poller *Poller, err error) {

// Close closes the poller.
func (p *Poller) Close() error {
if err := unix.Close(p.fd); err != nil {
return os.NewSyscallError("close", err)
if err := os.NewSyscallError("close", unix.Close(p.fd)); err != nil {
return err
}
return os.NewSyscallError("close", unix.Close(p.wfd))
}
Expand Down
8 changes: 4 additions & 4 deletions internal/netpoll/netpoll_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ import (

// SetKeepAlive sets the keepalive for the connection.
func SetKeepAlive(fd, secs int) error {
if err := unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_KEEPALIVE, 1); err != nil {
return os.NewSyscallError("setsockopt", err)
if err := os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_KEEPALIVE, 1)); err != nil {
return err
}
switch err := unix.SetsockoptInt(fd, unix.IPPROTO_TCP, unix.TCP_KEEPINTVL, secs); err {
switch err := os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.IPPROTO_TCP, unix.TCP_KEEPINTVL, secs)); err {
case nil, unix.ENOPROTOOPT: // OS X 10.7 and earlier don't support this option
default:
return os.NewSyscallError("setsockopt", err)
return err
}
return os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.IPPROTO_TCP, unix.TCP_KEEPALIVE, secs))
}
8 changes: 4 additions & 4 deletions internal/netpoll/netpoll_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ import (

// SetKeepAlive sets the keepalive for the connection.
func SetKeepAlive(fd, secs int) error {
if err := unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_KEEPALIVE, 1); err != nil {
return os.NewSyscallError("setsockopt", err)
if err := os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_KEEPALIVE, 1)); err != nil {
return err
}
if err := unix.SetsockoptInt(fd, unix.IPPROTO_TCP, unix.TCP_KEEPINTVL, secs); err != nil {
return os.NewSyscallError("setsockopt", err)
if err := os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.IPPROTO_TCP, unix.TCP_KEEPINTVL, secs)); err != nil {
return err
}
return os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.IPPROTO_TCP, unix.TCP_KEEPIDLE, secs))
}
9 changes: 3 additions & 6 deletions internal/reuseport/tcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,20 +129,17 @@ func tcpReusablePort(proto, addr string, reusePort bool) (fd int, netAddr net.Ad
}
}()

if err = unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEADDR, 1); err != nil {
err = os.NewSyscallError("setsockopt", err)
if err = os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEADDR, 1)); err != nil {
return
}

if reusePort {
if err = unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEPORT, 1); err != nil {
err = os.NewSyscallError("setsockopt", err)
if err = os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEPORT, 1)); err != nil {
return
}
}

if err = unix.Bind(fd, sockaddr); err != nil {
err = os.NewSyscallError("bind", err)
if err = os.NewSyscallError("bind", unix.Bind(fd, sockaddr)); err != nil {
return
}

Expand Down
9 changes: 3 additions & 6 deletions internal/reuseport/udp.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,19 +128,16 @@ func udpReusablePort(proto, addr string, reusePort bool) (fd int, netAddr net.Ad
}()

// Allow broadcast.
if err = unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_BROADCAST, 1); err != nil {
err = os.NewSyscallError("setsockopt", err)
if err = os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_BROADCAST, 1)); err != nil {
return
}

if err = unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEADDR, 1); err != nil {
err = os.NewSyscallError("setsockopt", err)
if err = os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEADDR, 1)); err != nil {
return
}

if reusePort {
if err = unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEPORT, 1); err != nil {
err = os.NewSyscallError("setsockopt", err)
if err = os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEPORT, 1)); err != nil {
return
}
}
Expand Down
9 changes: 3 additions & 6 deletions internal/reuseport/uds.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,20 +68,17 @@ func udsReusablePort(proto, addr string, reusePort bool) (fd int, netAddr net.Ad
}
}()

if err = unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEADDR, 1); err != nil {
err = os.NewSyscallError("setsockopt", err)
if err = os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEADDR, 1)); err != nil {
return
}

if reusePort {
if err = unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEPORT, 1); err != nil {
err = os.NewSyscallError("setsockopt", err)
if err = os.NewSyscallError("setsockopt", unix.SetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_REUSEPORT, 1)); err != nil {
return
}
}

if err = unix.Bind(fd, sockaddr); err != nil {
err = os.NewSyscallError("bind", err)
if err = os.NewSyscallError("bind", unix.Bind(fd, sockaddr)); err != nil {
return
}

Expand Down

0 comments on commit 2d54d80

Please sign in to comment.