if (events[n].flags & EV_ERROR) {
u->error = true;
- uloop_fd_delete(u);
+ if (!(u->flags & ULOOP_ERROR_CB))
+ uloop_fd_delete(u);
}
if(events[n].filter == EVFILT_READ)
if (events[n].events & (EPOLLERR|EPOLLHUP)) {
u->error = true;
- uloop_fd_delete(u);
+ if (!(u->flags & ULOOP_ERROR_CB))
+ uloop_fd_delete(u);
}
if(!(events[n].events & (EPOLLRDHUP|EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP))) {
sock->registered = true;
sock->eof = false;
+ sock->error = false;
out:
return ret;
if (!recursive_calls++)
uloop_setup_signals(true);
+ uloop_cancelled = false;
while(!uloop_cancelled)
{
uloop_gettime(&tv);