Disconnect HttpServerConnection when AsioTlsStream is shut down

This commit is contained in:
Johannes Schmidt 2025-07-02 11:37:10 +02:00
parent ee64f85e9c
commit ad39f83097
2 changed files with 20 additions and 0 deletions

View File

@ -66,6 +66,7 @@ void HttpServerConnection::Start()
IoEngine::SpawnCoroutine(m_IoStrand, [this, keepAlive](asio::yield_context yc) { ProcessMessages(yc); });
IoEngine::SpawnCoroutine(m_IoStrand, [this, keepAlive](asio::yield_context yc) { CheckLiveness(yc); });
IoEngine::SpawnCoroutine(m_IoStrand, [this, keepAlive](asio::yield_context yc) { CheckStream(yc); });
}
/**
@ -539,3 +540,21 @@ void HttpServerConnection::CheckLiveness(boost::asio::yield_context yc)
}
}
}
/**
* Checks if the @c AsioTlsStream has been closed to shut down the connection.
*
* @param yc The yield context for the coroutine of this function
*/
void HttpServerConnection::CheckStream(boost::asio::yield_context yc)
{
using wait_type = boost::asio::socket_base::wait_type;
while(!m_ShuttingDown){
boost::system::error_code ec;
m_Stream->async_fill(yc[ec]);
if (ec) {
Disconnect(yc);
}
}
}

View File

@ -51,6 +51,7 @@ private:
void ProcessMessages(boost::asio::yield_context yc);
void CheckLiveness(boost::asio::yield_context yc);
void CheckStream(boost::asio::yield_context yc);
};
}