diff options
author | Simon Rettberg | 2015-02-25 17:50:33 +0100 |
---|---|---|
committer | Simon Rettberg | 2015-02-25 17:50:33 +0100 |
commit | dd1b647b0b8193a58c047daee6079417b07a5ac5 (patch) | |
tree | f943759257defe1f57bf1921b84a483e3be8494b /epoll.c | |
parent | Hack in support for numeric account names (diff) | |
download | ldadp-dd1b647b0b8193a58c047daee6079417b07a5ac5.tar.gz ldadp-dd1b647b0b8193a58c047daee6079417b07a5ac5.tar.xz ldadp-dd1b647b0b8193a58c047daee6079417b07a5ac5.zip |
Fix epoll based detection of closed connections
Diffstat (limited to 'epoll.c')
-rw-r--r-- | epoll.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -20,7 +20,7 @@ int ePoll_wait(const int timeoutMs) if (num < 0) return -1; for (int i = 0; i < num; ++i) { epoll_item_t *data = (epoll_item_t *)events[i].data.ptr; - (*data->callback)(data, events[i].events & EPOLLIN, events[i].events & EPOLLOUT, events[i].events & (EPOLLERR | EPOLLHUP)); + (*data->callback)(data, events[i].events & EPOLLIN, events[i].events & EPOLLOUT, events[i].events & (EPOLLERR | EPOLLHUP | EPOLLRDHUP)); } return 0; } @@ -31,6 +31,7 @@ int ePoll_wait(const int timeoutMs) int ePoll_add(uint32_t flags, epoll_item_t* callback) { struct epoll_event event; + memset(&event, 0, sizeof event); event.data.ptr = (void*)callback; event.events = flags; return epoll_ctl(efd, EPOLL_CTL_ADD, callback->fd, &event); |