From: JINMEI Tatuya Date: Sun, 26 Feb 2012 23:52:19 +0000 (-0800) Subject: [asiofix] imported a bug fix in ASIO 1.5.1: X-Git-Tag: trac2351_base~226^2~116^2~164^2~3^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e4b2c2633ebb3859286e9a4c19e97e17bcac41b3;p=thirdparty%2Fkea.git [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. --- diff --git a/ext/asio/asio/detail/impl/kqueue_reactor.ipp b/ext/asio/asio/detail/impl/kqueue_reactor.ipp index 8db77cb3e5..00ebfeb674 100644 --- a/ext/asio/asio/detail/impl/kqueue_reactor.ipp +++ b/ext/asio/asio/detail/impl/kqueue_reactor.ipp @@ -301,12 +301,14 @@ void kqueue_reactor::run(bool block, op_queue& 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; }