[git commit] fakeidentd: simplify ndelay manipulations

Denys Vlasenko vda.linux at googlemail.com
Fri Jan 10 16:12:54 UTC 2014


commit: http://git.busybox.net/busybox/commit/?id=604b7b6cc03bab020f03d35f0064ab0e87845616
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
new_peer                                              91      79     -12
do_rd                                                197     152     -45

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 networking/isrv_identd.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/networking/isrv_identd.c b/networking/isrv_identd.c
index c6b0f65..252c8ab 100644
--- a/networking/isrv_identd.c
+++ b/networking/isrv_identd.c
@@ -25,8 +25,7 @@ enum { TIMEOUT = 20 };
 
 typedef struct identd_buf_t {
 	int pos;
-	int fd_flag;
-	char buf[64 - 2*sizeof(int)];
+	char buf[64 - sizeof(int)];
 } identd_buf_t;
 
 #define bogouser bb_common_bufsiz1
@@ -42,7 +41,7 @@ static int new_peer(isrv_state_t *state, int fd)
 	if (isrv_register_fd(state, peer, fd) < 0)
 		return peer; /* failure, unregister peer */
 
-	buf->fd_flag = fcntl(fd, F_GETFL) | O_NONBLOCK;
+	ndelay_on(fd);
 	isrv_want_rd(state, fd);
 	return 0;
 }
@@ -55,8 +54,6 @@ static int do_rd(int fd, void **paramp)
 
 	cur = buf->buf + buf->pos;
 
-	if (buf->fd_flag & O_NONBLOCK)
-		fcntl(fd, F_SETFL, buf->fd_flag);
 	sz = safe_read(fd, cur, sizeof(buf->buf) - 1 - buf->pos);
 
 	if (sz < 0) {
@@ -70,7 +67,7 @@ static int do_rd(int fd, void **paramp)
 	p = strpbrk(cur, "\r\n");
 	if (p)
 		*p = '\0';
-	if (!p && sz && buf->pos < (int)sizeof(buf->buf))
+	if (!p && sz)
 		return 0;  /* "session is ok" */
 
 	/* Terminate session. If we are in server mode, then
@@ -78,8 +75,11 @@ static int do_rd(int fd, void **paramp)
 	if (fd == 0)
 		fd++; /* inetd mode? then write to fd 1 */
 	fdprintf(fd, "%s : USERID : UNIX : %s\r\n", buf->buf, bogouser);
-	if (buf->fd_flag & O_NONBLOCK)
-		fcntl(fd, F_SETFL, buf->fd_flag & ~O_NONBLOCK);
+	/*
+	 * Why bother if we are going to close fd now anyway?
+	 * if (server)
+	 *	ndelay_off(fd);
+	 */
  term:
 	free(buf);
 	return 1; /* "terminate" */
@@ -94,10 +94,9 @@ static void inetd_mode(void)
 {
 	identd_buf_t *buf = xzalloc(sizeof(*buf));
 	/* buf->pos = 0; - xzalloc did it */
-	/* We do NOT want nonblocking I/O here! */
-	/* buf->fd_flag = 0; - xzalloc did it */
 	do
 		alarm(TIMEOUT);
+		/* Note: we do NOT want nonblocking I/O here! */
 	while (do_rd(0, (void*)&buf) == 0);
 }
 


More information about the busybox-cvs mailing list