Do not query DNS for holepunchserver more than once per tic

This commit is contained in:
James R 2022-08-21 03:45:55 -07:00
parent 2f17fdca6c
commit 1551e4572d

View file

@ -175,6 +175,7 @@ static UINT8 UPNP_support = TRUE;
#endif // !NONET
#include "i_system.h"
#include "i_time.h"
#include "i_net.h"
#include "d_net.h"
#include "d_netfil.h"
@ -1517,18 +1518,29 @@ static void rendezvous(int size)
char *host = strtok(addrs, ":");
char *port = strtok(NULL, ":");
mysockaddr_t rzv;
static mysockaddr_t rzv;
static tic_t refreshtic = (tic_t)-1;
if (SOCK_GetAddr(&rzv.ip4, host, (port ? port : "7777"), false))
tic_t tic = I_GetTime();
if (tic != refreshtic)
{
if (SOCK_GetAddr(&rzv.ip4, host, (port ? port : "7777"), false))
{
refreshtic = tic;
}
else
{
CONS_Alert(CONS_ERROR, "Failed to contact rendezvous server (%s).\n",
cv_rendezvousserver.string);
}
}
if (tic == refreshtic)
{
holepunchpacket->magic = hole_punch_magic;
sendto(mysockets[0], doomcom->data, size, 0, &rzv.any, sizeof rzv.ip4);
}
else
{
CONS_Alert(CONS_ERROR, "Failed to contact rendezvous server (%s).\n",
cv_rendezvousserver.string);
}
free(addrs);
}