static uint32_t epoll_map_flags(uint16_t flags)
{
uint32_t ret = 0;
- if (flags & TEVENT_FD_READ) ret |= (EPOLLIN | EPOLLERR | EPOLLHUP);
+ if (flags & TEVENT_FD_READ) ret |= (EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLRDHUP);
if (flags & TEVENT_FD_WRITE) ret |= (EPOLLOUT | EPOLLERR | EPOLLHUP);
return ret;
}
mpx_fde = talloc_get_type_abort(fde->additional_data,
struct tevent_fd);
}
- if (events[i].events & (EPOLLHUP|EPOLLERR)) {
+ if (events[i].events & (EPOLLHUP|EPOLLERR|EPOLLRDHUP)) {
bool handled_fde = epoll_handle_hup_or_err(epoll_ev, fde);
bool handled_mpx = epoll_handle_hup_or_err(epoll_ev, mpx_fde);