Ticket #4971: fix_boost.diff

File fix_boost.diff, 1016 bytes (added by APinaev@…, 12 years ago)

if use force remove descriptor from epoll descriptors, then bug disappear

  • epoll_reactor.ipp

     
    185185  io_service_.post_deferred_completions(ops);
    186186}
    187187
    188 void epoll_reactor::close_descriptor(socket_type,
     188void epoll_reactor::close_descriptor(socket_type descriptor,
    189189    epoll_reactor::per_descriptor_data& descriptor_data)
    190190{
    191191  if (!descriptor_data)
     
    196196
    197197  if (!descriptor_data->shutdown_)
    198198  {
    199     // Remove the descriptor from the set of known descriptors. The descriptor
    200     // will be automatically removed from the epoll set when it is closed.
     199    // Remove the descriptor from the set of known descriptors.
    201200
     201    //because ZERO as last argument work only at kernels >= 2.6.9 use fake event
     202    epoll_event ev = { 0, { 0 } };
     203    //ignore all possible errors
     204    epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev);
     205
    202206    op_queue<operation> ops;
    203207    for (int i = 0; i < max_ops; ++i)
    204208    {