summaryrefslogtreecommitdiff
path: root/src/network/network_gui.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-03-06 12:42:01 +0000
committersmatz <smatz@openttd.org>2009-03-06 12:42:01 +0000
commitf3ed8268b6ead737f9fe3c32f152743a47f9cd03 (patch)
tree090a0987af3a2a82a3ef659f1c00647717f306ed /src/network/network_gui.cpp
parent3d05c31031e3c6759a246cabe761b0edd01dc6a7 (diff)
downloadopenttd-f3ed8268b6ead737f9fe3c32f152743a47f9cd03.tar.xz
(svn r15628) -Fix [FS#2705]: kicking/banning a client from the Client list window crashed the server
Diffstat (limited to 'src/network/network_gui.cpp')
-rw-r--r--src/network/network_gui.cpp21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp
index 4f7bd5832..4edd09f8a 100644
--- a/src/network/network_gui.cpp
+++ b/src/network/network_gui.cpp
@@ -1445,25 +1445,20 @@ static const NetworkClientInfo *NetworkFindClientInfo(byte client_no)
// Here we start to define the options out of the menu
static void ClientList_Kick(byte client_no)
{
- if (client_no < MAX_CLIENTS) {
- SEND_COMMAND(PACKET_SERVER_ERROR)(GetNetworkClientSocket(client_no), NETWORK_ERROR_KICKED);
- }
+ const NetworkClientInfo *ci = NetworkFindClientInfo(client_no);
+
+ if (ci == NULL) return;
+
+ NetworkServerKickClient(ci->client_id);
}
static void ClientList_Ban(byte client_no)
{
- uint32 ip = NetworkFindClientInfo(client_no)->client_ip;
+ const NetworkClientInfo *ci = NetworkFindClientInfo(client_no);
- for (uint i = 0; i < lengthof(_network_ban_list); i++) {
- if (_network_ban_list[i] == NULL) {
- _network_ban_list[i] = strdup(inet_ntoa(*(struct in_addr *)&ip));
- break;
- }
- }
+ if (ci == NULL) return;
- if (client_no < MAX_CLIENTS) {
- SEND_COMMAND(PACKET_SERVER_ERROR)(GetNetworkClientSocket(client_no), NETWORK_ERROR_KICKED);
- }
+ NetworkServerBanIP(GetClientIP(ci));
}
static void ClientList_GiveMoney(byte client_no)