Skip to content
Snippets Groups Projects
Commit 1078a642 authored by Monster Iestyn's avatar Monster Iestyn
Browse files

Loop through rebound packets until you found a good one or ran out of them

parent 5a1fc609
No related branches found
No related tags found
No related merge requests found
...@@ -1124,6 +1124,10 @@ boolean HGetPacket(void) ...@@ -1124,6 +1124,10 @@ boolean HGetPacket(void)
// Get a packet from self // Get a packet from self
if (rebound_tail != rebound_head) if (rebound_tail != rebound_head)
{ {
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]); M_Memcpy(netbuffer, &reboundstore[rebound_tail], reboundsize[rebound_tail]);
doomcom->datalength = reboundsize[rebound_tail]; doomcom->datalength = reboundsize[rebound_tail];
if (netbuffer->packettype == PT_NODETIMEOUT) if (netbuffer->packettype == PT_NODETIMEOUT)
...@@ -1134,13 +1138,14 @@ boolean HGetPacket(void) ...@@ -1134,13 +1138,14 @@ boolean HGetPacket(void)
rebound_tail = (rebound_tail+1) % MAXREBOUND; rebound_tail = (rebound_tail+1) % MAXREBOUND;
if (doomcom->remotenode == -1) // wait hang on what? if (doomcom->remotenode == -1) // wait hang on what?
return true; // there might still be packets from others though, so don't return false continue; // ignore it, look for the next packet
#ifdef DEBUGFILE #ifdef DEBUGFILE
if (debugfile) if (debugfile)
DebugPrintpacket("GETLOCAL"); DebugPrintpacket("GETLOCAL");
#endif #endif
return true; return true;
} }
}
if (!netgame) if (!netgame)
return false; return false;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment