Fix async_base immediate completion

`complete(false, ...)` used the wrong executor when an async operation
completed immediately, potentially executing the completion handler on
the IO executor in some cases.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
This commit is contained in:
Damian Jarek
2019-04-05 05:08:31 -07:00
committed by Vinnie Falco
parent 50d5b965dd
commit ce986118f8
3 changed files with 16 additions and 6 deletions
+2 -2
View File
@@ -340,7 +340,7 @@ public:
if(! is_continuation)
{
net::post(net::bind_executor(
wg1_.get_executor(),
get_executor(),
beast::bind_front_handler(
std::move(h_),
std::forward<Args>(args)...)));
@@ -348,8 +348,8 @@ public:
}
else
{
h_(std::forward<Args>(args)...);
wg1_.reset();
h_(std::forward<Args>(args)...);
}
}