diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/network/network.cpp | 36 |
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(); } |