diff --git a/ircd/aio.cc b/ircd/aio.cc index 50f7f4167..bd12d0c9a 100644 --- a/ircd/aio.cc +++ b/ircd/aio.cc @@ -193,7 +193,7 @@ try { ctx::wait(); } - while(!retval && !errcode); + while(retval == -2); if(retval == -1) throw_system_error(errcode); @@ -212,7 +212,6 @@ catch(const ctx::interrupted &e) void ircd::fs::aio::request::handle() { - assert(this->retval || errcode); if(likely(waiter && waiter != ctx::current)) ircd::ctx::notify(*waiter); } diff --git a/ircd/aio.h b/ircd/aio.h index 1040ff364..0875a7c4c 100644 --- a/ircd/aio.h +++ b/ircd/aio.h @@ -54,7 +54,7 @@ struct ircd::fs::aio::request struct read; struct write; - ssize_t retval {0}; + ssize_t retval {-2}; ssize_t errcode {0}; ctx::ctx *waiter {ctx::current};