From: Andrew Tridgell Date: Sun, 13 Feb 2005 08:52:12 +0000 (+0000) Subject: r5370: epoll gives more precise event bits like EPOLLHUP instead of just EPOLLIN... X-Git-Tag: samba-4.0.0alpha6~801^3~11564 X-Git-Url: http://git.samba.org/samba.git/?p=bbaumbach%2Fsamba-autobuild%2F.git;a=commitdiff_plain;h=cc336df026db5b613c2416163a5167bfe57fb810 r5370: epoll gives more precise event bits like EPOLLHUP instead of just EPOLLIN. We need to map these to "read" events for the events code to work on errors like connection refused (thanks to vl for noticing this bug) (This used to be commit 7c379590b4ca808eddef5c3ac15db25cefc5215b) --- diff --git a/source4/lib/events/events.c b/source4/lib/events/events.c index 34606273995..97836037593 100644 --- a/source4/lib/events/events.c +++ b/source4/lib/events/events.c @@ -404,7 +404,8 @@ static int event_loop_epoll(struct event_context *ev, struct timeval *tvalp) epoll_fallback_to_select(ev, "epoll_wait() gave bad data"); return -1; } - if (events[i].events & EPOLLIN) flags |= EVENT_FD_READ; + if (events[i].events & (EPOLLIN|EPOLLHUP|EPOLLERR)) + flags |= EVENT_FD_READ; if (events[i].events & EPOLLOUT) flags |= EVENT_FD_WRITE; if (flags) { fde->handler(ev, fde, flags, fde->private);