From 662f66e5018f55afb14a526e27d97f7fb7949bd0 Mon Sep 17 00:00:00 2001 From: Benjamin Sergeant <“bsergean@gmail.com”> Date: Fri, 19 Apr 2019 16:31:33 -0700 Subject: [PATCH] (socket server) wait for all connections threads to be terminated before exiting stop method --- ixwebsocket/IXSocketServer.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ixwebsocket/IXSocketServer.cpp b/ixwebsocket/IXSocketServer.cpp index 99e29e6c..63b2ed1f 100644 --- a/ixwebsocket/IXSocketServer.cpp +++ b/ixwebsocket/IXSocketServer.cpp @@ -137,8 +137,16 @@ namespace ix void SocketServer::stop() { - closeTerminatedThreads(); - assert(_connectionsThreads.empty()); + while (true) + { + closeTerminatedThreads(); + if (_connectionsThreads.empty()) break; + + // wait 10ms and try again later. + // we could have a timeout, but if we exit of here + // we leaked threads, it is quite bad. + std::this_thread::sleep_for(std::chrono::milliseconds(10)); + } if (!_thread.joinable()) return; // nothing to do