Index: epoll_reactor.ipp =================================================================== --- epoll_reactor.ipp (revision 67128) +++ epoll_reactor.ipp (working copy) @@ -185,7 +185,7 @@ io_service_.post_deferred_completions(ops); } -void epoll_reactor::close_descriptor(socket_type, +void epoll_reactor::close_descriptor(socket_type descriptor, epoll_reactor::per_descriptor_data& descriptor_data) { if (!descriptor_data) @@ -196,9 +196,13 @@ if (!descriptor_data->shutdown_) { - // Remove the descriptor from the set of known descriptors. The descriptor - // will be automatically removed from the epoll set when it is closed. + // Remove the descriptor from the set of known descriptors. + //because ZERO as last argument work only at kernels >= 2.6.9 use fake event + epoll_event ev = { 0, { 0 } }; + //ignore all possible errors + epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev); + op_queue ops; for (int i = 0; i < max_ops; ++i) {