1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-27 22:49:25 +02:00

Fix possible thread race on server shutdown:

- Main thread shutting down server from player request
- Network thread shutting down server due to server shutting down
network
This commit is contained in:
Ivan Savenko
2024-05-13 16:00:19 +00:00
parent d295784f6e
commit f8e4e41c39

View File

@@ -902,6 +902,8 @@ void CServerHandler::onPacketReceived(const std::shared_ptr<INetworkConnection>
void CServerHandler::onDisconnected(const std::shared_ptr<INetworkConnection> & connection, const std::string & errorMessage)
{
boost::mutex::scoped_lock interfaceLock(GH.interfaceMutex);
if (connection != networkConnection)
{
// ServerHandler already closed this connection on its own
@@ -920,8 +922,6 @@ void CServerHandler::onDisconnected(const std::shared_ptr<INetworkConnection> &
return;
}
boost::mutex::scoped_lock interfaceLock(GH.interfaceMutex);
logNetwork->error("Lost connection to server! Connection has been closed");
if(client)
@@ -956,7 +956,6 @@ void CServerHandler::waitForServerShutdown()
}
else
{
boost::mutex::scoped_lock interfaceLock(GH.interfaceMutex);
if (getState() == EClientState::CONNECTING)
{
showServerError(CGI->generaltexth->translate("vcmi.server.errors.existingProcess"));