From a1e0c57258e58a6a7b1a4700af72c04b2c221214 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 3 Mar 2010 14:46:44 +0000 Subject: check POLLHUP/POLLERR separately --- sircbot.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'sircbot.c') diff --git a/sircbot.c b/sircbot.c index fdb9b8c..32db75c 100644 --- a/sircbot.c +++ b/sircbot.c @@ -343,13 +343,21 @@ static int irc_loop(struct irc_session *sess, struct sircbot_channel *chan, send_fifo_queue(sess, &chan[i-1], now) < 0) goto ret_err; - if (!(fds[i].revents)) + if (fds[i].revents & POLLHUP) + return 0; + + if (fds[i].revents & POLLERR) + goto ret_err; + + if (!(fds[i].revents & POLLIN)) continue; /* no data available for read */ printf("DEBUG: data available from fds[%i]\n", i); r = read(fds[i].fd, buf, sizeof(buf)-1); if (r < 0) goto ret_err; + if (r == 0) + continue; printf("DEBUG: read %i bytes\n", r); -- cgit v1.2.3