better server termination / another try at preventing thread join failures

This commit is contained in:
Benjamin Sergeant 2019-04-24 09:45:53 -07:00
parent f1b3ecc738
commit f563d14134
3 changed files with 11 additions and 0 deletions

View File

@ -135,6 +135,11 @@ namespace ix
_conditionVariable.wait(lock);
}
void SocketServer::stopAcceptingConnections()
{
_stop = true;
}
void SocketServer::stop()
{
while (true)
@ -270,6 +275,8 @@ namespace ix
connectionState = _connectionStateFactory();
}
if (_stop) return;
// Launch the handleConnection work asynchronously in its own thread.
_connectionsThreads.push_back(std::make_pair(
connectionState,

View File

@ -57,6 +57,8 @@ namespace ix
void logError(const std::string& str);
void logInfo(const std::string& str);
void stopAcceptingConnections();
private:
// Member variables
int _port;

View File

@ -37,6 +37,8 @@ namespace ix
void WebSocketServer::stop()
{
stopAcceptingConnections();
auto clients = getClients();
for (auto client : clients)
{