diff --git a/cpp/src/Ice/Selector.cpp b/cpp/src/Ice/Selector.cpp index b8e15e4..a80f760 100644 --- a/cpp/src/Ice/Selector.cpp +++ b/cpp/src/Ice/Selector.cpp @@ -418,8 +418,8 @@ Selector::select(vector >& handlers, int ti #if defined(ICE_USE_EPOLL) struct epoll_event& ev = _events[i]; p.first = reinterpret_cast(ev.data.ptr); - p.second = static_cast(((ev.events & EPOLLIN) ? SocketOperationRead : SocketOperationNone) | - ((ev.events & EPOLLOUT) ? SocketOperationWrite : SocketOperationNone)); + p.second = static_cast(((ev.events & (EPOLLIN | EPOLLERR)) ? SocketOperationRead : SocketOperationNone) | + ((ev.events & (EPOLLOUT | EPOLLERR)) ? SocketOperationWrite : SocketOperationNone)); #else struct kevent& ev = _events[i]; if(ev.flags & EV_ERROR)