0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-11-29 10:12:39 +01:00

ircd::net: Support interruption of UDP listening.

This commit is contained in:
Jason Volk 2018-11-29 19:16:05 -08:00
parent 13bce714ab
commit b0bfd87e9f

View file

@ -1706,6 +1706,17 @@ ircd::net::listener_udp::acceptor::operator()(datagram &datagram)
{
assert(ctx::current);
const auto flags
{
this->flags(datagram.flag)
};
const auto interruption{[this]
(ctx::ctx *const &) noexcept
{
this->interrupt();
}};
this->waiting++;
const unwind dec{[this]
{
@ -1715,7 +1726,7 @@ ircd::net::listener_udp::acceptor::operator()(datagram &datagram)
ip::udp::endpoint ep;
const size_t rlen
{
a.async_receive_from(datagram.mbufs, ep, flags(datagram.flag), yield_context{to_asio{}})
a.async_receive_from(datagram.mbufs, ep, flags, yield_context{to_asio{interruption}})
};
datagram.remote = make_ipport(ep);