浏览代码

Ignore duplicate disconnected calls

Ivan Savenko 1 年之前
父节点
当前提交
aadbf6dd6a
共有 1 个文件被更改,包括 15 次插入15 次删除
  1. 15 15
      server/GlobalLobbyProcessor.cpp

+ 15 - 15
server/GlobalLobbyProcessor.cpp

@@ -40,26 +40,26 @@ void GlobalLobbyProcessor::onDisconnected(const std::shared_ptr<INetworkConnecti
 	}
 	else
 	{
-		if (owner.getState() == EServerState::LOBBY)
+		for (auto const & proxy : proxyConnections)
 		{
-			for (auto const & proxy : proxyConnections)
-			{
-				if (proxy.second == connection)
-				{
-					JsonNode message;
-					message["type"].String() = "leaveGameRoom";
-					message["accountID"].String() = proxy.first;
+			if (proxy.second != connection)
+				continue;
 
-					sendMessage(controlConnection, message);
+			if (owner.getState() == EServerState::LOBBY)
+			{
+				JsonNode message;
+				message["type"].String() = "leaveGameRoom";
+				message["accountID"].String() = proxy.first;
 
-					proxyConnections.erase(proxy.first);
-					break;
-				}
+				sendMessage(controlConnection, message);
 			}
-		}
 
-		// player disconnected
-		owner.onDisconnected(connection, errorMessage);
+			proxyConnections.erase(proxy.first);
+
+			// player disconnected
+			owner.onDisconnected(connection, errorMessage);
+			return;
+		}
 	}
 }