(svn r20930) -Codechange: simplify the socket handler allocation

This commit is contained in:
rubidium 2010-10-15 18:45:56 +00:00
parent 7ba07d9573
commit 76579df240
1 changed files with 9 additions and 27 deletions

View File

@ -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();
}