diff --git a/repertory/librepertory/src/comm/packet/client_pool.cpp b/repertory/librepertory/src/comm/packet/client_pool.cpp index 3314d50c..a9b8b32e 100644 --- a/repertory/librepertory/src/comm/packet/client_pool.cpp +++ b/repertory/librepertory/src/comm/packet/client_pool.cpp @@ -146,18 +146,20 @@ void client_pool::remove_client(const std::string &client_id) { } void client_pool::shutdown() { - if (not shutdown_) { - event_system::instance().raise("client_pool"); - unique_mutex_lock pool_lock(pool_mutex_); - if (not shutdown_) { - shutdown_ = true; - for (auto &pool_entry : pool_lookup_) { - pool_entry.second->shutdown(); - } - pool_lookup_.clear(); - } - pool_lock.unlock(); - event_system::instance().raise("client_pool"); + if (shutdown_) { + return; } + + event_system::instance().raise("client_pool"); + unique_mutex_lock pool_lock(pool_mutex_); + if (not shutdown_) { + shutdown_ = true; + for (auto &pool_entry : pool_lookup_) { + pool_entry.second->shutdown(); + } + pool_lookup_.clear(); + } + pool_lock.unlock(); + event_system::instance().raise("client_pool"); } } // namespace repertory