Merge branch 'hole-punch-less-getaddrinfo' into 'next'

Call getaddrinfo less frequently when hole punching

See merge request KartKrew/Kart-Public!303
This commit is contained in:
Sal 2022-08-26 22:44:25 +00:00
commit 886bda775b
2 changed files with 29 additions and 14 deletions

View file

@ -1933,7 +1933,16 @@ static void CL_LoadReceivedSavegame(void)
#ifndef NONET
static void SendAskInfo(INT32 node)
{
const tic_t asktime = I_GetTime();
tic_t asktime;
if (node != 0 && node != BROADCASTADDR &&
cv_rendezvousserver.string[0])
{
I_NetRequestHolePunch();
}
asktime = I_GetTime();
netbuffer->packettype = PT_ASKINFO;
netbuffer->u.askinfo.version = VERSION;
netbuffer->u.askinfo.time = (tic_t)LONG(asktime);
@ -1942,12 +1951,6 @@ static void SendAskInfo(INT32 node)
// now allowed traffic from the host to us in, so once the MS relays
// our address to the host, it'll be able to speak to us.
HSendPacket(node, false, 0, sizeof (askinfo_pak));
if (node != 0 && node != BROADCASTADDR &&
cv_rendezvousserver.string[0])
{
I_NetRequestHolePunch();
}
}
serverelem_t serverlist[MAXSERVERLIST];

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;
tic_t tic = I_GetTime();
if (tic != refreshtic)
{
if (SOCK_GetAddr(&rzv.ip4, host, (port ? port : "7777"), false))
{
holepunchpacket->magic = hole_punch_magic;
sendto(mysockets[0], doomcom->data, size, 0, &rzv.any, sizeof rzv.ip4);
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);
}
free(addrs);
}