X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fengine_devpoll.c;h=ece113a0a8ecb6c5ef63c917d17586cd63e7cea8;hb=c982f87bdf01f9f09606e72132c319dd57380335;hp=8bd9c75511708b0c454d96e0846d22b35b6ace4d;hpb=3f41f9d9261ceca571ecdf3f8f075c94b21281de;p=ircu2.10.12-pk.git diff --git a/ircd/engine_devpoll.c b/ircd/engine_devpoll.c index 8bd9c75..ece113a 100644 --- a/ircd/engine_devpoll.c +++ b/ircd/engine_devpoll.c @@ -62,13 +62,6 @@ # define POLLWRITEFLAGS POLLWRNORM #endif -/* Figure out what bits indicate errors */ -#ifdef POLLHUP -# define POLLERRORS (POLLHUP|POLLERR) -#else -# define POLLERRORS POLLERR -#endif - static struct Socket** sockList; static int devpoll_max; static int devpoll_fd; @@ -318,6 +311,17 @@ engine_loop(struct Generators* gen) } } + assert(!(polls[i].revents & POLLERR)); + +#ifdef POLLHUP + if (polls[i].revents & POLLHUP) { /* hang-up on socket */ + Debug((DEBUG_ENGINE, "devpoll: EOF from client (POLLHUP)")); + event_generate(ET_EOF, sock, 0); + nfds--; + continue; + } +#endif /* POLLHUP */ + switch (s_state(sock)) { case SS_CONNECTING: if (polls[i].revents & POLLWRITEFLAGS) { /* connection completed */