diff options
author | Kenneth R Westerback <krw@cvs.openbsd.org> | 2016-03-25 15:06:59 +0000 |
---|---|---|
committer | Kenneth R Westerback <krw@cvs.openbsd.org> | 2016-03-25 15:06:59 +0000 |
commit | c811b954860c4c84af5cc99ea22d89bcbee7421e (patch) | |
tree | af06c1bf9d0185418e08abc00232375581478554 | |
parent | db191d55659dd9dc19b2e3d13b370e62e0cd1c46 (diff) |
Nuke session_socket_blockmode() and session_socket_linger(). Use
the identical io_set_blocking() and io_set_linger().
Since both are always called to turn off blocking or lingering,
nuke the parameter and associated enum in favour of "just doing the
right thing".
While passing remove the unneeded last parameter to the remaining
fcntl(F_GETFL).
Finally, rename the functions to io_set_nonblocking() and
io_set_nolinger() for clarity.
No functional change.
Started with a sweep of fcntl() usage inspired by guenther@.
ok gilles@
-rw-r--r-- | usr.sbin/smtpd/config.c | 6 | ||||
-rw-r--r-- | usr.sbin/smtpd/control.c | 6 | ||||
-rw-r--r-- | usr.sbin/smtpd/filter.c | 6 | ||||
-rw-r--r-- | usr.sbin/smtpd/ioev.c | 19 | ||||
-rw-r--r-- | usr.sbin/smtpd/ioev.h | 6 | ||||
-rw-r--r-- | usr.sbin/smtpd/mda.c | 4 | ||||
-rw-r--r-- | usr.sbin/smtpd/mproc.c | 6 | ||||
-rw-r--r-- | usr.sbin/smtpd/smtp.c | 6 | ||||
-rw-r--r-- | usr.sbin/smtpd/smtp_session.c | 4 | ||||
-rw-r--r-- | usr.sbin/smtpd/smtpd.h | 9 | ||||
-rw-r--r-- | usr.sbin/smtpd/util.c | 29 |
11 files changed, 31 insertions, 70 deletions
diff --git a/usr.sbin/smtpd/config.c b/usr.sbin/smtpd/config.c index 67a6799abee..633374dd17f 100644 --- a/usr.sbin/smtpd/config.c +++ b/usr.sbin/smtpd/config.c @@ -1,4 +1,4 @@ -/* $OpenBSD: config.c,v 1.33 2015/10/14 20:45:30 gilles Exp $ */ +/* $OpenBSD: config.c,v 1.34 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2008 Pierre-Yves Ritschard <pyr@openbsd.org> @@ -117,8 +117,8 @@ init_pipes(void) fatal("socketpair"); pipes[i][j] = sockpair[0]; pipes[j][i] = sockpair[1]; - session_socket_blockmode(pipes[i][j], BM_NONBLOCK); - session_socket_blockmode(pipes[j][i], BM_NONBLOCK); + io_set_nonblocking(pipes[i][j]); + io_set_nonblocking(pipes[j][i]); } } diff --git a/usr.sbin/smtpd/control.c b/usr.sbin/smtpd/control.c index 1cf6eb0642d..8e66de3bfe1 100644 --- a/usr.sbin/smtpd/control.c +++ b/usr.sbin/smtpd/control.c @@ -1,4 +1,4 @@ -/* $OpenBSD: control.c,v 1.111 2016/02/09 10:38:02 gilles Exp $ */ +/* $OpenBSD: control.c,v 1.112 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2012 Gilles Chehade <gilles@poolp.org> @@ -235,7 +235,7 @@ control_create_socket(void) fatal("control: chmod"); } - session_socket_blockmode(fd, BM_NONBLOCK); + io_set_nonblocking(fd); control_state.fd = fd; return fd; @@ -358,7 +358,7 @@ control_accept(int listenfd, short event, void *arg) fatal("control_accept: accept"); } - session_socket_blockmode(connfd, BM_NONBLOCK); + io_set_nonblocking(connfd); if (getpeereid(connfd, &euid, &egid) == -1) fatal("getpeereid"); diff --git a/usr.sbin/smtpd/filter.c b/usr.sbin/smtpd/filter.c index 4d197cf4405..c927e855046 100644 --- a/usr.sbin/smtpd/filter.c +++ b/usr.sbin/smtpd/filter.c @@ -1,4 +1,4 @@ -/* $OpenBSD: filter.c,v 1.16 2016/02/03 11:14:08 eric Exp $ */ +/* $OpenBSD: filter.c,v 1.17 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2011 Gilles Chehade <gilles@poolp.org> @@ -665,8 +665,8 @@ filter_tx(struct filter_session *s, int sink) return (-1); } - io_set_blocking(sp[0], 0); - io_set_blocking(sp[1], 0); + io_set_nonblocking(sp[0]); + io_set_nonblocking(sp[1]); iobuf_init(&s->ibuf, 0, 0); io_init(&s->iev, sp[0], s, filter_tx_io, &s->ibuf); diff --git a/usr.sbin/smtpd/ioev.c b/usr.sbin/smtpd/ioev.c index 437bdae3b69..14771a0a617 100644 --- a/usr.sbin/smtpd/ioev.c +++ b/usr.sbin/smtpd/ioev.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ioev.c,v 1.24 2015/12/28 22:08:30 jung Exp $ */ +/* $OpenBSD: ioev.c,v 1.25 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -131,30 +131,25 @@ io_strevent(int evt) } void -io_set_blocking(int fd, int blocking) +io_set_nonblocking(int fd) { int flags; - if ((flags = fcntl(fd, F_GETFL, 0)) == -1) + if ((flags = fcntl(fd, F_GETFL)) == -1) err(1, "io_set_blocking:fcntl(F_GETFL)"); - if (blocking) - flags &= ~O_NONBLOCK; - else - flags |= O_NONBLOCK; + flags |= O_NONBLOCK; if ((flags = fcntl(fd, F_SETFL, flags)) == -1) err(1, "io_set_blocking:fcntl(F_SETFL)"); } void -io_set_linger(int fd, int linger) +io_set_nolinger(int fd) { struct linger l; memset(&l, 0, sizeof(l)); - l.l_onoff = linger ? 1 : 0; - l.l_linger = linger; if (setsockopt(fd, SOL_SOCKET, SO_LINGER, &l, sizeof(l)) == -1) err(1, "io_set_linger:setsockopt()"); } @@ -596,8 +591,8 @@ io_connect(struct io *io, const struct sockaddr *sa, const struct sockaddr *bsa) if ((sock = socket(sa->sa_family, SOCK_STREAM, 0)) == -1) goto fail; - io_set_blocking(sock, 0); - io_set_linger(sock, 0); + io_set_nonblocking(sock); + io_set_nolinger(sock); if (bsa && bind(sock, bsa, bsa->sa_len) == -1) goto fail; diff --git a/usr.sbin/smtpd/ioev.h b/usr.sbin/smtpd/ioev.h index dfcc7843cd9..cb630a7af7e 100644 --- a/usr.sbin/smtpd/ioev.h +++ b/usr.sbin/smtpd/ioev.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ioev.h,v 1.5 2014/12/24 13:51:31 eric Exp $ */ +/* $OpenBSD: ioev.h,v 1.6 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -52,8 +52,8 @@ struct io { const char *error; /* only valid immediately on callback */ }; -void io_set_blocking(int, int); -void io_set_linger(int, int); +void io_set_nonblocking(int); +void io_set_nolinger(int); void io_init(struct io*, int, void*, void(*)(struct io*, int), struct iobuf*); void io_clear(struct io*); diff --git a/usr.sbin/smtpd/mda.c b/usr.sbin/smtpd/mda.c index c99d1404a35..082e04e2ff6 100644 --- a/usr.sbin/smtpd/mda.c +++ b/usr.sbin/smtpd/mda.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mda.c,v 1.117 2016/02/02 05:45:27 sunil Exp $ */ +/* $OpenBSD: mda.c,v 1.118 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org> @@ -431,7 +431,7 @@ mda_imsg(struct mproc *p, struct imsg *imsg) "for session %016"PRIx64 " evpid %016"PRIx64, imsg->fd, s->id, s->evp->id); - io_set_blocking(imsg->fd, 0); + io_set_nonblocking(imsg->fd); io_init(&s->io, imsg->fd, s, mda_io, &s->iobuf); io_set_write(&s->io); return; diff --git a/usr.sbin/smtpd/mproc.c b/usr.sbin/smtpd/mproc.c index 192e9b36d0b..f422b6bb2d2 100644 --- a/usr.sbin/smtpd/mproc.c +++ b/usr.sbin/smtpd/mproc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mproc.c,v 1.18 2016/02/10 15:03:37 millert Exp $ */ +/* $OpenBSD: mproc.c,v 1.19 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@faurot.net> @@ -52,8 +52,8 @@ mproc_fork(struct mproc *p, const char *path, char *argv[]) if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, sp) < 0) return (-1); - session_socket_blockmode(sp[0], BM_NONBLOCK); - session_socket_blockmode(sp[1], BM_NONBLOCK); + io_set_nonblocking(sp[0]); + io_set_nonblocking(sp[1]); if ((p->pid = fork()) == -1) goto err; diff --git a/usr.sbin/smtpd/smtp.c b/usr.sbin/smtpd/smtp.c index 70d73aafc0a..685afcca29d 100644 --- a/usr.sbin/smtpd/smtp.c +++ b/usr.sbin/smtpd/smtp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: smtp.c,v 1.154 2016/02/13 20:43:07 gilles Exp $ */ +/* $OpenBSD: smtp.c,v 1.155 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org> @@ -169,7 +169,7 @@ smtp_setup_events(void) " ca \"%s\"", ss_to_text(&l->ss), ntohs(l->port), l->flags, l->pki_name, l->ca_name); - session_socket_blockmode(l->fd, BM_NONBLOCK); + io_set_nonblocking(l->fd); if (listen(l->fd, SMTPD_BACKLOG) == -1) fatal("listen"); event_set(&l->ev, l->fd, EV_READ|EV_PERSIST, smtp_accept, l); @@ -280,7 +280,7 @@ smtp_accept(int fd, short event, void *p) close(sock); return; } - io_set_blocking(sock, 0); + io_set_nonblocking(sock); sessions++; stat_increment("smtp.session", 1); diff --git a/usr.sbin/smtpd/smtp_session.c b/usr.sbin/smtpd/smtp_session.c index 88c912a21d3..78552b9088f 100644 --- a/usr.sbin/smtpd/smtp_session.c +++ b/usr.sbin/smtpd/smtp_session.c @@ -1,4 +1,4 @@ -/* $OpenBSD: smtp_session.c,v 1.268 2016/02/05 19:15:15 jung Exp $ */ +/* $OpenBSD: smtp_session.c,v 1.269 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org> @@ -1178,7 +1178,7 @@ smtp_filter_fd(uint64_t id, int fd) } iobuf_init(&s->obuf, 0, 0); - io_set_blocking(fd, 0); + io_set_nonblocking(fd); io_init(&s->oev, fd, s, smtp_data_io, &s->obuf); iobuf_fqueue(&s->obuf, "Received: "); diff --git a/usr.sbin/smtpd/smtpd.h b/usr.sbin/smtpd/smtpd.h index 783f96f8111..994e630fd84 100644 --- a/usr.sbin/smtpd/smtpd.h +++ b/usr.sbin/smtpd/smtpd.h @@ -1,4 +1,4 @@ -/* $OpenBSD: smtpd.h,v 1.513 2016/02/21 15:17:25 gilles Exp $ */ +/* $OpenBSD: smtpd.h,v 1.514 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org> @@ -308,11 +308,6 @@ enum imsg_type { IMSG_CA_PRIVDEC }; -enum blockmodes { - BM_NORMAL, - BM_NONBLOCK -}; - enum smtp_proc_type { PROC_PARENT = 0, PROC_LKA, @@ -1506,8 +1501,6 @@ void iobuf_xinit(struct iobuf *, size_t, size_t, const char *); void iobuf_xfqueue(struct iobuf *, const char *, const char *, ...); void log_envelope(const struct envelope *, const char *, const char *, const char *); -void session_socket_blockmode(int, enum blockmodes); -void session_socket_no_linger(int); int session_socket_error(int); int getmailname(char *, size_t); int base64_encode(unsigned char const *, size_t, char *, size_t); diff --git a/usr.sbin/smtpd/util.c b/usr.sbin/smtpd/util.c index 8e62e941660..4f4094d5b76 100644 --- a/usr.sbin/smtpd/util.c +++ b/usr.sbin/smtpd/util.c @@ -1,4 +1,4 @@ -/* $OpenBSD: util.c,v 1.125 2016/01/12 17:29:43 sunil Exp $ */ +/* $OpenBSD: util.c,v 1.126 2016/03/25 15:06:58 krw Exp $ */ /* * Copyright (c) 2000,2001 Markus Friedl. All rights reserved. @@ -664,33 +664,6 @@ generate_uid(void) return (uid); } -void -session_socket_blockmode(int fd, enum blockmodes bm) -{ - int flags; - - if ((flags = fcntl(fd, F_GETFL, 0)) == -1) - fatal("fcntl F_GETFL"); - - if (bm == BM_NONBLOCK) - flags |= O_NONBLOCK; - else - flags &= ~O_NONBLOCK; - - if ((flags = fcntl(fd, F_SETFL, flags)) == -1) - fatal("fcntl F_SETFL"); -} - -void -session_socket_no_linger(int fd) -{ - struct linger lng; - - memset(&lng, 0, sizeof(lng)); - if (setsockopt(fd, SOL_SOCKET, SO_LINGER, &lng, sizeof(lng)) == -1) - fatal("session_socket_no_linger"); -} - int session_socket_error(int fd) { |