Revert "netcode: replace some stuff with memsets + add a little bounds safety in some places"
This reverts commit b964df8137.
This commit is contained in:
parent
3028839f2f
commit
72e5148ce6
4 changed files with 40 additions and 45 deletions
|
|
@ -2267,10 +2267,8 @@ static void CL_ConnectToServer(void)
|
|||
{
|
||||
pnumnodes = 0;
|
||||
for (i = 0; i < MAXNETNODES; i++)
|
||||
{
|
||||
if (nodeingame[i])
|
||||
pnumnodes++;
|
||||
}
|
||||
}
|
||||
}
|
||||
while (!(cl_mode == CL_CONNECTED && (client || (server && nodewaited <= pnumnodes))));
|
||||
|
|
@ -3699,10 +3697,8 @@ void D_QuitNetGame(void)
|
|||
|
||||
netbuffer->packettype = PT_SERVERSHUTDOWN;
|
||||
for (i = 0; i < MAXNETNODES; i++)
|
||||
{
|
||||
if (nodeingame[i])
|
||||
HSendPacket(i, true, 0, 0);
|
||||
}
|
||||
#ifdef MASTERSERVER
|
||||
if (serverrunning && netgame && cv_advertise.value) // see mserv.c Online()
|
||||
UnregisterServer();
|
||||
|
|
@ -6261,10 +6257,8 @@ static inline void PingUpdate(void)
|
|||
|
||||
//send out our ping packets
|
||||
for (i = 0; i < MAXNETNODES; i++)
|
||||
{
|
||||
if (nodeingame[i])
|
||||
HSendPacket(i, true, 0, sizeof(netinfo_pak));
|
||||
}
|
||||
|
||||
pingmeasurecount = 0; //Reset count
|
||||
}
|
||||
|
|
@ -6367,10 +6361,8 @@ static void HandleNodeTimeouts(void)
|
|||
if (server)
|
||||
{
|
||||
for (i = 1; i < MAXNETNODES; i++)
|
||||
{
|
||||
if (nodeingame[i] && freezetimeout[i] < I_GetTime())
|
||||
Net_ConnectionTimeout(i);
|
||||
}
|
||||
|
||||
// In case the cvar value was lowered
|
||||
if (joindelay)
|
||||
|
|
|
|||
|
|
@ -632,8 +632,13 @@ void Net_WaitAllAckReceived(UINT32 timeout)
|
|||
|
||||
static void InitNode(netnode_t *node)
|
||||
{
|
||||
memset(node, 0, sizeof(node_t));
|
||||
node->acktosend_head = node->acktosend_tail = 0;
|
||||
node->firstacktosend = 0;
|
||||
node->nextacknum = 1;
|
||||
node->remotefirstack = 0;
|
||||
node->flags = 0;
|
||||
node->sendnum = 0;
|
||||
node->recvnum = 0;
|
||||
}
|
||||
|
||||
static void InitAck(void)
|
||||
|
|
|
|||
|
|
@ -674,18 +674,18 @@ boolean CL_LoadServerFiles(void)
|
|||
const char *s;
|
||||
switch(fileneeded[i].status)
|
||||
{
|
||||
case FS_NOTFOUND:
|
||||
s = "FS_NOTFOUND";
|
||||
break;
|
||||
case FS_REQUESTED:
|
||||
s = "FS_REQUESTED";
|
||||
break;
|
||||
case FS_DOWNLOADING:
|
||||
s = "FS_DOWNLOADING";
|
||||
break;
|
||||
default:
|
||||
s = "unknown";
|
||||
break;
|
||||
case FS_NOTFOUND:
|
||||
s = "FS_NOTFOUND";
|
||||
break;
|
||||
case FS_REQUESTED:
|
||||
s = "FS_REQUESTED";
|
||||
break;
|
||||
case FS_DOWNLOADING:
|
||||
s = "FS_DOWNLOADING";
|
||||
break;
|
||||
default:
|
||||
s = "unknown";
|
||||
break;
|
||||
}
|
||||
I_Error("Try to load file \"%s\" with status of %d (%s)\n", fileneeded[i].filename,
|
||||
fileneeded[i].status, s);
|
||||
|
|
@ -1585,21 +1585,21 @@ void PT_FileFragment(SINT8 node, INT32 netconsole)
|
|||
const char *s;
|
||||
switch(file->status)
|
||||
{
|
||||
case FS_NOTFOUND:
|
||||
s = "FS_NOTFOUND";
|
||||
break;
|
||||
case FS_FOUND:
|
||||
s = "FS_FOUND";
|
||||
break;
|
||||
case FS_OPEN:
|
||||
s = "FS_OPEN";
|
||||
break;
|
||||
case FS_BADHASH:
|
||||
s = "FS_BADHASH";
|
||||
break;
|
||||
default:
|
||||
s = "unknown";
|
||||
break;
|
||||
case FS_NOTFOUND:
|
||||
s = "FS_NOTFOUND";
|
||||
break;
|
||||
case FS_FOUND:
|
||||
s = "FS_FOUND";
|
||||
break;
|
||||
case FS_OPEN:
|
||||
s = "FS_OPEN";
|
||||
break;
|
||||
case FS_BADHASH:
|
||||
s = "FS_BADHASH";
|
||||
break;
|
||||
default:
|
||||
s = "unknown";
|
||||
break;
|
||||
}
|
||||
I_Error("Received a file not requested (file id: %d, file status: %s)\n", filenum, s);
|
||||
}
|
||||
|
|
|
|||
16
src/i_tcp.c
16
src/i_tcp.c
|
|
@ -507,10 +507,8 @@ static void cleanupnodes(void)
|
|||
|
||||
// Why can't I start at zero?
|
||||
for (j = 1; j < MAXNETNODES; j++)
|
||||
{
|
||||
if (!(nodeingame[j] || SendingFile(j)))
|
||||
nodeconnected[j] = false;
|
||||
}
|
||||
}
|
||||
|
||||
static SINT8 getfreenode(void)
|
||||
|
|
@ -520,13 +518,11 @@ static SINT8 getfreenode(void)
|
|||
cleanupnodes();
|
||||
|
||||
for (j = 0; j < MAXNETNODES; j++)
|
||||
{
|
||||
if (!nodeconnected[j])
|
||||
{
|
||||
nodeconnected[j] = true;
|
||||
return j;
|
||||
}
|
||||
}
|
||||
|
||||
/** \warning No free node? Just in case a node might not have been freed properly,
|
||||
* look if there are connected nodes that aren't in game, and forget them.
|
||||
|
|
@ -840,7 +836,7 @@ static void SOCK_Send(void)
|
|||
static void SOCK_FreeNodenum(INT32 numnode)
|
||||
{
|
||||
// can't disconnect from self :)
|
||||
if (numnode <= 0 || numnode > MAXNETNODES)
|
||||
if (!numnode || numnode > MAXNETNODES)
|
||||
return;
|
||||
|
||||
DEBFILE(va("Free node %d (%s)\n", numnode, SOCK_GetNodeAddress(numnode)));
|
||||
|
|
@ -1466,12 +1462,14 @@ static void SOCK_RegisterHolePunch(void)
|
|||
|
||||
static boolean SOCK_OpenSocket(void)
|
||||
{
|
||||
memset(clientaddress, 0, sizeof(clientaddress));
|
||||
size_t i;
|
||||
|
||||
memset(clientaddress, 0, sizeof (clientaddress));
|
||||
|
||||
memset(nodeconnected, false, sizeof(nodeconnected));
|
||||
nodeconnected[0] = true; // always connected to self
|
||||
for (i = 1; i < MAXNETNODES; i++)
|
||||
nodeconnected[i] = false;
|
||||
nodeconnected[BROADCASTADDR] = true;
|
||||
|
||||
I_NetSend = SOCK_Send;
|
||||
I_NetGet = SOCK_Get;
|
||||
I_NetCloseSocket = SOCK_CloseSocket;
|
||||
|
|
@ -1521,7 +1519,7 @@ static boolean SOCK_Ban(INT32 node)
|
|||
{
|
||||
INT32 ban;
|
||||
|
||||
if (node < 0 || node > MAXNETNODES)
|
||||
if (node > MAXNETNODES)
|
||||
return false;
|
||||
|
||||
ban = numbans;
|
||||
|
|
|
|||
Loading…
Reference in a new issue