Handle epoll hup

Refs #431
This commit is contained in:
M66B 2016-06-24 18:33:29 +02:00
parent 0520a51736
commit 4b847acc88
3 changed files with 6 additions and 6 deletions

View File

@ -65,7 +65,7 @@ void check_icmp_socket(const struct arguments *args, const struct epoll_event *e
struct ng_session *s = (struct ng_session *) ev->data.ptr;
// Check socket error
if (ev->events & EPOLLERR) {
if ((ev->events & EPOLLERR) || (ev->events & EPOLLHUP)) {
s->icmp.time = time(NULL);
int serr = 0;
@ -220,7 +220,7 @@ jboolean handle_icmp(const struct arguments *args,
// Monitor events
memset(&s->ev, 0, sizeof(struct epoll_event));
s->ev.events = EPOLLIN | EPOLLERR;
s->ev.events = EPOLLIN;
s->ev.data.ptr = s;
if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, s->socket, &s->ev))
log_android(ANDROID_LOG_ERROR, "epoll add icmp error %d: %s", errno, strerror(errno));

View File

@ -187,7 +187,7 @@ void check_tcp_socket(const struct arguments *args,
s->tcp.remote_seq - s->tcp.remote_start);
// Check socket error
if (ev->events & EPOLLERR) {
if ((ev->events & EPOLLERR) || (ev->events && EPOLLHUP)) {
s->tcp.time = time(NULL);
int serr = 0;
@ -535,7 +535,7 @@ jboolean handle_tcp(const struct arguments *args,
// Monitor events
memset(&s->ev, 0, sizeof(struct epoll_event));
s->ev.events = EPOLLOUT | EPOLLERR;
s->ev.events = EPOLLOUT;
s->ev.data.ptr = s;
if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, s->socket, &s->ev))
log_android(ANDROID_LOG_ERROR, "epoll add tcp error %d: %s", errno,

View File

@ -88,7 +88,7 @@ void check_udp_socket(const struct arguments *args, const struct epoll_event *ev
struct ng_session *s = (struct ng_session *) ev->data.ptr;
// Check socket error
if (ev->events & EPOLLERR) {
if ((ev->events & EPOLLERR) || (ev->events & EPOLLHUP)) {
s->udp.time = time(NULL);
int serr = 0;
@ -312,7 +312,7 @@ jboolean handle_udp(const struct arguments *args,
// Monitor events
memset(&s->ev, 0, sizeof(struct epoll_event));
s->ev.events = EPOLLIN | EPOLLERR;
s->ev.events = EPOLLIN;
s->ev.data.ptr = s;
if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, s->socket, &s->ev))
log_android(ANDROID_LOG_ERROR, "epoll add udp error %d: %s", errno, strerror(errno));