Skip to content
Snippets Groups Projects
Commit 8a6beee5 authored by Lactozilla's avatar Lactozilla :speech_balloon:
Browse files

Merge branch 'lift-ban-limits' into 'next'

Lift ban limits

See merge request !2502
parents e6124eae 522b354b
Branches
No related tags found
No related merge requests found
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#endif #endif
#include "../doomdef.h" #include "../doomdef.h"
#include "../z_zone.h"
#ifdef USE_WINSOCK1 #ifdef USE_WINSOCK1
#include <winsock.h> #include <winsock.h>
...@@ -124,8 +125,6 @@ typedef union ...@@ -124,8 +125,6 @@ typedef union
static boolean UPNP_support = true; static boolean UPNP_support = true;
#endif // HAVE_MINIUPNC #endif // HAVE_MINIUPNC
#define MAXBANS 100
#include "../i_system.h" #include "../i_system.h"
#include "i_net.h" #include "i_net.h"
#include "d_net.h" #include "d_net.h"
...@@ -173,8 +172,8 @@ static mysockaddr_t clientaddress[MAXNETNODES+1]; ...@@ -173,8 +172,8 @@ static mysockaddr_t clientaddress[MAXNETNODES+1];
static mysockaddr_t broadcastaddress[MAXNETNODES+1]; static mysockaddr_t broadcastaddress[MAXNETNODES+1];
static size_t broadcastaddresses = 0; static size_t broadcastaddresses = 0;
static boolean nodeconnected[MAXNETNODES+1]; static boolean nodeconnected[MAXNETNODES+1];
static mysockaddr_t banned[MAXBANS]; static mysockaddr_t *banned;
static UINT8 bannedmask[MAXBANS]; static UINT8 *bannedmask;
static size_t numbans = 0; static size_t numbans = 0;
static boolean SOCK_bannednode[MAXNETNODES+1]; /// \note do we really need the +1? static boolean SOCK_bannednode[MAXNETNODES+1]; /// \note do we really need the +1?
...@@ -1261,9 +1260,9 @@ static boolean SOCK_Ban(INT32 node) ...@@ -1261,9 +1260,9 @@ static boolean SOCK_Ban(INT32 node)
{ {
if (node > MAXNETNODES) if (node > MAXNETNODES)
return false; return false;
if (numbans == MAXBANS)
return false;
banned = Z_Realloc(banned, sizeof(*banned) * (numbans+1), PU_STATIC, NULL);
bannedmask = Z_Realloc(bannedmask, sizeof(*bannedmask) * (numbans+1), PU_STATIC, NULL);
M_Memcpy(&banned[numbans], &clientaddress[node], sizeof (mysockaddr_t)); M_Memcpy(&banned[numbans], &clientaddress[node], sizeof (mysockaddr_t));
if (banned[numbans].any.sa_family == AF_INET) if (banned[numbans].any.sa_family == AF_INET)
{ {
...@@ -1286,7 +1285,7 @@ static boolean SOCK_SetBanAddress(const char *address, const char *mask) ...@@ -1286,7 +1285,7 @@ static boolean SOCK_SetBanAddress(const char *address, const char *mask)
struct my_addrinfo *ai, *runp, hints; struct my_addrinfo *ai, *runp, hints;
int gaie; int gaie;
if (numbans == MAXBANS || !address) if (!address)
return false; return false;
memset(&hints, 0x00, sizeof(hints)); memset(&hints, 0x00, sizeof(hints));
...@@ -1301,8 +1300,10 @@ static boolean SOCK_SetBanAddress(const char *address, const char *mask) ...@@ -1301,8 +1300,10 @@ static boolean SOCK_SetBanAddress(const char *address, const char *mask)
runp = ai; runp = ai;
while(runp != NULL && numbans != MAXBANS) while(runp != NULL)
{ {
banned = Z_Realloc(banned, sizeof(*banned) * (numbans+1), PU_STATIC, NULL);
bannedmask = Z_Realloc(bannedmask, sizeof(*bannedmask) * (numbans+1), PU_STATIC, NULL);
memcpy(&banned[numbans], runp->ai_addr, runp->ai_addrlen); memcpy(&banned[numbans], runp->ai_addr, runp->ai_addrlen);
if (mask) if (mask)
...@@ -1332,6 +1333,10 @@ static boolean SOCK_SetBanAddress(const char *address, const char *mask) ...@@ -1332,6 +1333,10 @@ static boolean SOCK_SetBanAddress(const char *address, const char *mask)
static void SOCK_ClearBans(void) static void SOCK_ClearBans(void)
{ {
numbans = 0; numbans = 0;
Z_Free(banned);
banned = NULL;
Z_Free(bannedmask);
bannedmask = NULL;
} }
boolean I_InitTcpNetwork(void) boolean I_InitTcpNetwork(void)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment