Browse Source

[asiofix] imported a bug fix in ASIO 1.5.1:
https://sourceforge.net/projects/asio/files/asio/1.5.1%20%28Development%29/
* Fixed a bug on kqueue-based platforms, where reactor read operations that return false from their perform() function are not correctly re-registered with kqueue.
This is necessary for multiple processes sharing the same socket to both
accept queries.

JINMEI Tatuya 13 years ago
parent
commit
e4b2c2633e
1 changed files with 2 additions and 0 deletions
  1. 2 0
      ext/asio/asio/detail/impl/kqueue_reactor.ipp

+ 2 - 0
ext/asio/asio/detail/impl/kqueue_reactor.ipp

@@ -301,12 +301,14 @@ void kqueue_reactor::run(bool block, op_queue<operation>& ops)
               EV_ADD | EV_ONESHOT, EV_OOBAND, 0, descriptor_data);
         else
           continue;
+        break;
       case EVFILT_WRITE:
         if (!descriptor_data->op_queue_[write_op].empty())
           ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_WRITE,
               EV_ADD | EV_ONESHOT, 0, 0, descriptor_data);
         else
           continue;
+        break;
       default:
         break;
       }