Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 Jun 2010 21:18:58 +0000 (UTC)
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r209177 - head/sbin/hastd
Message-ID:  <201006142118.o5ELIwnv073347@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pjd
Date: Mon Jun 14 21:18:58 2010
New Revision: 209177
URL: http://svn.freebsd.org/changeset/base/209177

Log:
  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

Modified:
  head/sbin/hastd/hastd.c

Modified: head/sbin/hastd/hastd.c
==============================================================================
--- head/sbin/hastd/hastd.c	Mon Jun 14 21:11:23 2010	(r209176)
+++ head/sbin/hastd/hastd.c	Mon Jun 14 21:18:58 2010	(r209177)
@@ -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;
+		/* Setup descriptors for select(2). */
 		FD_ZERO(&rfds);
+		FD_SET(cfd, &rfds);
+		FD_SET(lfd, &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_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
 	}
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006142118.o5ELIwnv073347>