Remove macros that are not really needed. The idea was to have them in case

we grow more descriptors, but I'll reconsider readding them once we get there.

Passing (a = b) expression to FD_ISSET() is bad idea, as FD_ISSET() evaluates
its argument twice.

Found by:	Coverity Prevent
CID:		5243
MFC after:	3 days
This commit is contained in:
Pawel Jakub Dawidek 2010-06-14 21:18:58 +00:00
parent a58b195e35
commit 9fab3c1b94

View File

@ -400,7 +400,11 @@ static void
main_loop(void)
{
fd_set rfds, wfds;
int fd, maxfd, ret;
int cfd, lfd, maxfd, ret;
cfd = proto_descriptor(cfg->hc_controlconn);
lfd = proto_descriptor(cfg->hc_listenconn);
maxfd = cfd > lfd ? cfd : lfd;
for (;;) {
if (sigchld_received) {
@ -412,22 +416,13 @@ main_loop(void)
hastd_reload();
}
maxfd = 0;
FD_ZERO(&rfds);
FD_ZERO(&wfds);
/* Setup descriptors for select(2). */
#define SETUP_FD(conn) do { \
fd = proto_descriptor(conn); \
if (fd >= 0) { \
maxfd = fd > maxfd ? fd : maxfd; \
FD_SET(fd, &rfds); \
FD_SET(fd, &wfds); \
} \
} while (0)
SETUP_FD(cfg->hc_controlconn);
SETUP_FD(cfg->hc_listenconn);
#undef SETUP_FD
FD_ZERO(&rfds);
FD_SET(cfd, &rfds);
FD_SET(lfd, &rfds);
FD_ZERO(&wfds);
FD_SET(cfd, &wfds);
FD_SET(lfd, &wfds);
ret = select(maxfd + 1, &rfds, &wfds, NULL, NULL);
if (ret == -1) {
@ -437,13 +432,10 @@ main_loop(void)
pjdlog_exit(EX_OSERR, "select() failed");
}
#define ISSET_FD(conn) \
(FD_ISSET((fd = proto_descriptor(conn)), &rfds) || FD_ISSET(fd, &wfds))
if (ISSET_FD(cfg->hc_controlconn))
if (FD_ISSET(cfd, &rfds) || FD_ISSET(cfd, &wfds))
control_handle(cfg);
if (ISSET_FD(cfg->hc_listenconn))
if (FD_ISSET(lfd, &rfds) || FD_ISSET(lfd, &wfds))
listen_accept();
#undef ISSET_FD
}
}