Changeset - r16219:a451607d6c51
[Not reviewed]
master
0 1 0
rubidium - 14 years ago 2010-10-15 18:45:56
rubidium@openttd.org
(svn r20930) -Codechange: simplify the socket handler allocation
1 file changed with 9 insertions and 27 deletions:
0 comments (0 inline, 0 general)
src/network/network.cpp
Show inline comments
 
@@ -475,25 +475,6 @@ void ParseConnectionString(const char **
 
	}
 
}
 

	
 
/* 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 
 
		/* 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 
 
			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();
 
	}
0 comments (0 inline, 0 general)