diff options
author | krw <krw@openbsd.org> | 2016-03-22 00:36:06 +0000 |
---|---|---|
committer | krw <krw@openbsd.org> | 2016-03-22 00:36:06 +0000 |
commit | 66d93f0fb95a91dd2e74eb2a5bfbebfcb12910e5 (patch) | |
tree | 558f24d50e8c1815f432cb990a8236e5e291e2db /usr.sbin/npppd | |
parent | tokenadm(8) is already pledged, do the same for tokeninit(8). (diff) | |
download | wireguard-openbsd-66d93f0fb95a91dd2e74eb2a5bfbebfcb12910e5.tar.xz wireguard-openbsd-66d93f0fb95a91dd2e74eb2a5bfbebfcb12910e5.zip |
Use SOCK_NONBLOCK in socket() and accept4() instead of a separate fcntl()
dance.
Inspired by guenther@
ok millert@ yasuoka@
Diffstat (limited to 'usr.sbin/npppd')
-rw-r--r-- | usr.sbin/npppd/npppd/control.c | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/usr.sbin/npppd/npppd/control.c b/usr.sbin/npppd/npppd/control.c index 03fb68a2723..d576be8e1a7 100644 --- a/usr.sbin/npppd/npppd/control.c +++ b/usr.sbin/npppd/npppd/control.c @@ -1,4 +1,4 @@ -/* $OpenBSD: control.c,v 1.4 2015/12/05 13:19:32 claudio Exp $ */ +/* $OpenBSD: control.c,v 1.5 2016/03/22 00:36:06 krw Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -49,7 +49,6 @@ void control_accept (int, short, void *); void control_close (int, struct control_sock *); void control_dispatch_imsg (int, short, void *); void control_imsg_forward (struct imsg *); -void fd_nonblock(int); int control_init(struct control_sock *cs) @@ -61,7 +60,7 @@ control_init(struct control_sock *cs) if (cs->cs_name == NULL) return (0); - if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { + if ((fd = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK, 0)) == -1) { log_warn("control_init: socket"); return (-1); } @@ -105,7 +104,6 @@ control_init(struct control_sock *cs) } TAILQ_INIT(&ctl_conns); - fd_nonblock(fd); cs->cs_fd = fd; return (0); @@ -156,8 +154,8 @@ control_accept(int listenfd, short event, void *arg) return; len = sizeof(sun); - if ((connfd = accept(listenfd, - (struct sockaddr *)&sun, &len)) == -1) { + if ((connfd = accept4(listenfd, + (struct sockaddr *)&sun, &len, SOCK_NONBLOCK)) == -1) { /* * Pause accept if we are out of file descriptors, or * libevent will haunt us here too. @@ -172,8 +170,6 @@ control_accept(int listenfd, short event, void *arg) return; } - fd_nonblock(connfd); - if ((c = calloc(1, sizeof(struct ctl_conn))) == NULL) { log_warn("control_accept"); close(connfd); @@ -345,15 +341,3 @@ control_imsg_forward(struct imsg *imsg) imsg->hdr.pid, -1, imsg->data, imsg->hdr.len - IMSG_HEADER_SIZE); } - -void -fd_nonblock(int fd) -{ - int flags; - - if ((flags = fcntl(fd, F_GETFL, 0)) == -1) - fatal("fcntl F_GETFL"); - flags |= O_NONBLOCK; - if ((flags = fcntl(fd, F_SETFL, flags)) == -1) - fatal("fcntl F_SETFL"); -} |