changeset 17604:9b95694514cf draft

(svn r22368) -Codechange: move the IP address field from the ClientInfo to ClientSocket
author rubidium <rubidium@openttd.org>
date Fri, 22 Apr 2011 16:03:48 +0000
parents dafbbdd3753c
children 919d6d568695
files src/network/network.cpp src/network/network_admin.cpp src/network/network_base.h src/network/network_server.cpp src/network/network_server.h
diffstat 5 files changed, 9 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -484,7 +484,7 @@
 
 	SetWindowDirty(WC_CLIENT_LIST, 0);
 	ServerNetworkGameSocketHandler *cs = new ServerNetworkGameSocketHandler(s);
-	cs->GetInfo()->client_address = address; // Save the IP of the client
+	cs->client_address = address; // Save the IP of the client
 }
 
 /**
@@ -684,11 +684,6 @@
 	assert(NetworkClientInfo::CanAllocateItem());
 	NetworkClientInfo *ci = new NetworkClientInfo(CLIENT_ID_SERVER);
 	ci->client_playas = _network_dedicated ? COMPANY_SPECTATOR : _local_company;
-	/* Give the server a valid IP; banning it is pointless anyways */
-	sockaddr_in sock;
-	memset(&sock, 0, sizeof(sock));
-	sock.sin_family = AF_INET;
-	ci->client_address = NetworkAddress((sockaddr*)&sock, sizeof(sock));
 
 	strecpy(ci->client_name, _settings_client.network.client_name, lastof(ci->client_name));
 }
--- a/src/network/network_admin.cpp
+++ b/src/network/network_admin.cpp
@@ -212,7 +212,7 @@
 
 	const NetworkClientInfo *ci = cs->GetInfo();
 	p->Send_uint32(ci->client_id);
-	p->Send_string(const_cast<NetworkAddress &>(ci->client_address).GetHostname());
+	p->Send_string(const_cast<NetworkAddress &>(cs->client_address).GetHostname());
 	p->Send_string(ci->client_name);
 	p->Send_uint8 (ci->client_lang);
 	p->Send_uint32(ci->join_date);
--- a/src/network/network_base.h
+++ b/src/network/network_base.h
@@ -27,7 +27,6 @@
 	char client_name[NETWORK_CLIENT_NAME_LENGTH];   ///< Name of the client
 	byte client_lang;                               ///< The language of the client
 	CompanyID client_playas;                        ///< As which company is this client playing (CompanyID)
-	NetworkAddress client_address;                  ///< IP-address of the client (so he can be banned)
 	Date join_date;                                 ///< Gamedate the client has joined
 
 	NetworkClientInfo(ClientID client_id = INVALID_CLIENT_ID) : client_id(client_id) {}
--- a/src/network/network_server.cpp
+++ b/src/network/network_server.cpp
@@ -1813,7 +1813,7 @@
  */
 const char *ServerNetworkGameSocketHandler::GetClientIP()
 {
-	return this->GetInfo()->client_address.GetHostname();
+	return this->client_address.GetHostname();
 }
 
 void NetworkServerShowStatusToConsole()
@@ -1936,11 +1936,11 @@
 	uint n = 0;
 
 	/* There can be multiple clients with the same IP, kick them all */
-	NetworkClientInfo *ci;
-	FOR_ALL_CLIENT_INFOS(ci) {
-		if (ci->client_id == CLIENT_ID_SERVER) continue;
-		if (ci->client_address.IsInNetmask(const_cast<char *>(ip))) {
-			NetworkServerKickClient(ci->client_id);
+	NetworkClientSocket *cs;
+	FOR_ALL_CLIENT_SOCKETS(cs) {
+		if (cs->client_id == CLIENT_ID_SERVER) continue;
+		if (cs->client_address.IsInNetmask(const_cast<char *>(ip))) {
+			NetworkServerKickClient(cs->client_id);
 			n++;
 		}
 	}
--- a/src/network/network_server.h
+++ b/src/network/network_server.h
@@ -76,6 +76,7 @@
 	Packet *savegame_packets;      ///< Packet queue of the savegame; send these "slowly" to the client.
 	struct PacketWriter *savegame; ///< Writer used to write the savegame.
 	ThreadMutex *savegame_mutex;   ///< Mutex for making threaded saving safe.
+	NetworkAddress client_address; ///< IP-address of the client (so he can be banned)
 
 	ServerNetworkGameSocketHandler(SOCKET s);
 	~ServerNetworkGameSocketHandler();