mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 09:11:48 +00:00
Loop through rebound packets until you found a good one or ran out of them
This commit is contained in:
parent
5a1fc6098e
commit
1078a642df
1 changed files with 17 additions and 12 deletions
29
src/d_net.c
29
src/d_net.c
|
@ -1124,22 +1124,27 @@ boolean HGetPacket(void)
|
|||
// Get a packet from self
|
||||
if (rebound_tail != rebound_head)
|
||||
{
|
||||
M_Memcpy(netbuffer, &reboundstore[rebound_tail], reboundsize[rebound_tail]);
|
||||
doomcom->datalength = reboundsize[rebound_tail];
|
||||
if (netbuffer->packettype == PT_NODETIMEOUT)
|
||||
doomcom->remotenode = netbuffer->u.textcmd[0];
|
||||
else
|
||||
doomcom->remotenode = 0;
|
||||
while (true) // loop until we found a valid packet, or we ran out of packets
|
||||
{ // provided MAXREBOUND is not all that large this shouldn't take too long
|
||||
if (rebound_tail == rebound_head)
|
||||
break; // just give up, none of them were any good somehow
|
||||
M_Memcpy(netbuffer, &reboundstore[rebound_tail], reboundsize[rebound_tail]);
|
||||
doomcom->datalength = reboundsize[rebound_tail];
|
||||
if (netbuffer->packettype == PT_NODETIMEOUT)
|
||||
doomcom->remotenode = netbuffer->u.textcmd[0];
|
||||
else
|
||||
doomcom->remotenode = 0;
|
||||
|
||||
rebound_tail = (rebound_tail+1) % MAXREBOUND;
|
||||
rebound_tail = (rebound_tail+1) % MAXREBOUND;
|
||||
|
||||
if (doomcom->remotenode == -1) // wait hang on what?
|
||||
return true; // there might still be packets from others though, so don't return false
|
||||
if (doomcom->remotenode == -1) // wait hang on what?
|
||||
continue; // ignore it, look for the next packet
|
||||
#ifdef DEBUGFILE
|
||||
if (debugfile)
|
||||
DebugPrintpacket("GETLOCAL");
|
||||
if (debugfile)
|
||||
DebugPrintpacket("GETLOCAL");
|
||||
#endif
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!netgame)
|
||||
|
|
Loading…
Reference in a new issue