summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-10-15 18:45:56 +0000
committerrubidium <rubidium@openttd.org>2010-10-15 18:45:56 +0000
commit76579df240614249fa9b7b5dbc8b984d9af35814 (patch)
tree974ad5003702ccaf3ac28b25389effaafbf1076c /src
parent7ba07d9573b7224846c183db25af43253bf5f7b9 (diff)
downloadopenttd-76579df240614249fa9b7b5dbc8b984d9af35814.tar.xz
(svn r20930) -Codechange: simplify the socket handler allocation
Diffstat (limited to 'src')
-rw-r--r--src/network/network.cpp36
1 files changed, 9 insertions, 27 deletions
diff --git a/src/network/network.cpp b/src/network/network.cpp
index 6d19dc738..308bd7873 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -475,25 +475,6 @@ void ParseConnectionString(const char **company, const char **port, char *connec
}
}
-/* Creates a new client from a socket
- * Used both by the server and the client */
-static NetworkClientSocket *NetworkAllocClient(SOCKET s)
-{
- if (!_network_server) {
- return new ClientNetworkGameSocketHandler(s);
- }
-
- /* Can we handle a new client? */
- if (_network_clients_connected >= MAX_CLIENTS) return NULL;
- if (_network_game_info.clients_on >= _settings_client.network.max_clients) return NULL;
-
- /* Register the login */
- _network_clients_connected++;
-
- SetWindowDirty(WC_CLIENT_LIST, 0);
- return new ServerNetworkGameSocketHandler(s);
-}
-
/* For the server, to accept new clients */
static void NetworkAcceptClients(SOCKET ls)
{
@@ -529,8 +510,9 @@ static void NetworkAcceptClients(SOCKET ls)
/* If this client is banned, continue with next client */
if (banned) continue;
- NetworkClientSocket *cs = NetworkAllocClient(s);
- if (cs == NULL) {
+ /* Can we handle a new client? */
+ if (_network_clients_connected >= MAX_CLIENTS ||
+ _network_game_info.clients_on >= _settings_client.network.max_clients) {
/* no more clients allowed?
* Send to the client that we are full! */
Packet p(PACKET_SERVER_FULL);
@@ -542,11 +524,11 @@ static void NetworkAcceptClients(SOCKET ls)
continue;
}
- /* a new client has connected. We set him at inactive for now
- * maybe he is only requesting server-info. Till he has sent a PACKET_CLIENT_MAP_OK
- * the client stays inactive */
- cs->status = STATUS_INACTIVE;
+ /* Register the login */
+ _network_clients_connected++;
+ SetWindowDirty(WC_CLIENT_LIST, 0);
+ ServerNetworkGameSocketHandler *cs = new ServerNetworkGameSocketHandler(s);
cs->GetInfo()->client_address = address; // Save the IP of the client
}
}
@@ -638,7 +620,7 @@ public:
virtual void OnConnect(SOCKET s)
{
_networking = true;
- NetworkAllocClient(s);
+ new ClientNetworkGameSocketHandler(s);
MyClient::SendCompanyInformationQuery();
}
};
@@ -721,7 +703,7 @@ public:
virtual void OnConnect(SOCKET s)
{
_networking = true;
- NetworkAllocClient(s);
+ new ClientNetworkGameSocketHandler(s);
IConsoleCmdExec("exec scripts/on_client.scr 0");
NetworkClient_Connected();
}