Mercurial > hg > openttd
changeset 16229:2a603f5a533a draft
(svn r20930) -Codechange: simplify the socket handler allocation
author | rubidium <rubidium@openttd.org> |
---|---|
date | Fri, 15 Oct 2010 18:45:56 +0000 |
parents | f2a7f28a545a |
children | 18dc1c066b56 |
files | src/network/network.cpp |
diffstat | 1 files changed, 9 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -475,25 +475,6 @@ } } -/* 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 @@ /* 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 @@ 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 @@ virtual void OnConnect(SOCKET s) { _networking = true; - NetworkAllocClient(s); + new ClientNetworkGameSocketHandler(s); MyClient::SendCompanyInformationQuery(); } }; @@ -721,7 +703,7 @@ virtual void OnConnect(SOCKET s) { _networking = true; - NetworkAllocClient(s); + new ClientNetworkGameSocketHandler(s); IConsoleCmdExec("exec scripts/on_client.scr 0"); NetworkClient_Connected(); }