From 027229f5c9f39424f9c0c6ae6411e4004164010e Mon Sep 17 00:00:00 2001 From: Rene Jochum Date: Mon, 25 Apr 2011 20:32:03 +0200 Subject: [PATCH] Fixes client ip handling for the banlist. --- lib/netplay/netplay.cpp | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/lib/netplay/netplay.cpp b/lib/netplay/netplay.cpp index c1efc6997..d8ba41c80 100644 --- a/lib/netplay/netplay.cpp +++ b/lib/netplay/netplay.cpp @@ -152,7 +152,6 @@ static struct IGDdatas data; // local ip address static char lanaddr[16]; -static char clientAddress[40] = { '\0' }; /** * Used for connections with clients. */ @@ -2303,20 +2302,6 @@ static void NETallowJoining(void) char ModList[modlist_string_size] = { '\0' }; char GamePassword[password_string_size] = { '\0' }; - if (onBanList(clientAddress)) - { - char buf[256] = {'\0'}; - - ssprintf(buf, "** A player that you have kicked tried to rejoin the game, and was rejected. IP:%s", clientAddress ); - debug(LOG_INFO, "%s", buf); - NETlogEntry(buf, SYNC_FLAG, i); - SocketSet_DelSocket(tmp_socket_set, tmp_socket[i]); - socketClose(tmp_socket[i]); - tmp_socket[i] = NULL; - sync_counter.rejected++; - return; - } - NETbeginDecode(NETnetTmpQueue(i), NET_JOIN); NETstring(name, sizeof(name)); NETint32_t(&MajorVersion); // NETCODE_VERSION_MAJOR @@ -2348,7 +2333,20 @@ static void NETallowJoining(void) SocketSet_AddSocket(socket_set, connected_bsocket[index]); NETmoveQueue(NETnetTmpQueue(i), NETnetQueue(index)); - if (!NETisCorrectVersion(MajorVersion, MinorVersion)) + // Copy players ip Address. + sstrcpy(NetPlay.players[index].IPtextAddress, getSocketTextAddress(connected_bsocket[index])); + + if (onBanList(NetPlay.players[index].IPtextAddress)) + { + char buf[256] = {'\0'}; + ssprintf(buf, "** A player that you have kicked tried to rejoin the game, and was rejected. IP: %s", NetPlay.players[index].IPtextAddress); + debug(LOG_INFO, "%s", buf); + NETlogEntry(buf, SYNC_FLAG, i); + + // Player has been kicked before, kick again. + rejected = (uint8_t)ERROR_KICKED; + } + else if (!NETisCorrectVersion(MajorVersion, MinorVersion)) { // Wrong version. Reject. rejected = (uint8_t)ERROR_WRONGVERSION; @@ -2388,13 +2386,6 @@ static void NETallowJoining(void) return; } - sstrcpy(NetPlay.players[index].IPtextAddress, clientAddress); - { - char buf[250] = {'\0'}; - snprintf(buf, sizeof(buf), "Player %d has joined, IP is:%s", index, clientAddress); - NETlogEntry(buf, SYNC_FLAG, index); - } - NETbeginEncode(NETnetQueue(index), NET_ACCEPTED); NETuint8_t(&index); NETend(); @@ -2404,6 +2395,10 @@ static void NETallowJoining(void) // then send info about newcomer to all players. NETBroadcastPlayerInfo(index); + char buf[250] = {'\0'}; + snprintf(buf, sizeof(buf), "Player %s has joined, IP is: %s", name, NetPlay.players[index].IPtextAddress); + NETlogEntry(buf, SYNC_FLAG, index); + debug(LOG_NET, "Player, %s, with index of %u has joined using socket %p", name, (unsigned int)index, connected_bsocket[index]); // Increment player count