Get rid of netbuffer global
Thx SRB2classic
This commit is contained in:
parent
e0d0d99cf3
commit
69ad164bbc
7 changed files with 59 additions and 16 deletions
|
|
@ -811,6 +811,7 @@ static inline void CL_DrawConnectionStatus(void)
|
|||
|
||||
static boolean CL_AskFileList(INT32 firstfile)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
netbuffer->packettype = PT_TELLFILESNEEDED;
|
||||
netbuffer->u.filesneedednum = firstfile;
|
||||
|
||||
|
|
@ -829,6 +830,7 @@ static boolean CL_AskFileList(INT32 firstfile)
|
|||
*/
|
||||
static boolean CL_SendJoin(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
UINT8 localplayers = 1;
|
||||
UINT8 i;
|
||||
|
||||
|
|
@ -932,6 +934,7 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime)
|
|||
UINT8 prefgametype = (cv_kartgametypepreference.value == -1)
|
||||
? gametype
|
||||
: cv_kartgametypepreference.value;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
netbuffer->packettype = PT_SERVERINFO;
|
||||
netbuffer->u.serverinfo._255 = 255;
|
||||
|
|
@ -1053,6 +1056,7 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime)
|
|||
static void SV_SendPlayerInfo(INT32 node)
|
||||
{
|
||||
UINT8 i;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
netbuffer->packettype = PT_PLAYERINFO;
|
||||
|
||||
for (i = 0; i < MSCOMPAT_MAXPLAYERS; i++)
|
||||
|
|
@ -1108,6 +1112,7 @@ static void SV_SendPlayerInfo(INT32 node)
|
|||
static boolean SV_SendServerConfig(INT32 node)
|
||||
{
|
||||
boolean waspacketsent;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
memset(&netbuffer->u.servercfg, 0, sizeof netbuffer->u.servercfg);
|
||||
|
||||
|
|
@ -1282,6 +1287,7 @@ static void CL_LoadReceivedSavegame(boolean reloading)
|
|||
savebuffer_t save = {0};
|
||||
size_t length, decompressedlen;
|
||||
char tmpsave[256];
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
sprintf(tmpsave, "%s" PATHSEP TMPSAVENAME, srb2home);
|
||||
|
||||
|
|
@ -1384,6 +1390,7 @@ static void CL_ReloadReceivedSavegame(void)
|
|||
static void SendAskInfo(INT32 node)
|
||||
{
|
||||
tic_t asktime;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
if (node != 0 && node != BROADCASTADDR &&
|
||||
cv_rendezvousserver.string[0])
|
||||
|
|
@ -3312,6 +3319,7 @@ static void Command_list_http_logins (void)
|
|||
static void Command_ResendGamestate(void)
|
||||
{
|
||||
SINT8 playernum;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
if (COM_Argc() == 1)
|
||||
{
|
||||
|
|
@ -3556,6 +3564,7 @@ static inline void SV_GenContext(void)
|
|||
//
|
||||
void D_QuitNetGame(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
if (!netgame || !netbuffer)
|
||||
return;
|
||||
|
||||
|
|
@ -4052,6 +4061,7 @@ void SV_StartSinglePlayerServer(void)
|
|||
|
||||
static void SV_SendRefuse(INT32 node, const char *reason)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
strcpy(netbuffer->u.serverrefuse.reason, reason);
|
||||
|
||||
netbuffer->packettype = PT_SERVERREFUSE;
|
||||
|
|
@ -4082,6 +4092,7 @@ static size_t TotalTextCmdPerTic(tic_t tic)
|
|||
*/
|
||||
static void HandleConnect(SINT8 node)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
char names[MAXSPLITSCREENPLAYERS][MAXPLAYERNAME + 1];
|
||||
INT32 i;
|
||||
|
||||
|
|
@ -4287,6 +4298,7 @@ static void HandleTimeout(SINT8 node)
|
|||
*/
|
||||
static void HandleServerInfo(SINT8 node)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
char servername[MAXSERVERNAME];
|
||||
// compute ping in ms
|
||||
const tic_t ticnow = I_GetTime();
|
||||
|
|
@ -4307,6 +4319,7 @@ static void HandleServerInfo(SINT8 node)
|
|||
static void HandlePlayerInfo(SINT8 node)
|
||||
{
|
||||
(void)node;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
for (INT32 i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
playerinfo[i] = netbuffer->u.playerinfo[i];
|
||||
|
|
@ -4317,6 +4330,7 @@ static void HandlePlayerInfo(SINT8 node)
|
|||
static void PT_WillResendGamestate(void)
|
||||
{
|
||||
char tmpsave[256];
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
if (server || cl_redownloadinggamestate)
|
||||
return;
|
||||
|
|
@ -4361,6 +4375,7 @@ static void PT_CanReceiveGamestate(SINT8 node)
|
|||
*/
|
||||
static void HandlePacketFromAwayNode(SINT8 node)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
if (node != servernode)
|
||||
DEBFILE(va("Received packet from unknown host %d\n", node));
|
||||
|
||||
|
|
@ -4609,6 +4624,7 @@ static boolean CheckForSpeedHacks(UINT8 p)
|
|||
*/
|
||||
static void HandlePacketFromPlayer(SINT8 node)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
INT32 netconsole;
|
||||
tic_t realend, realstart;
|
||||
UINT8 *pak, *txtpak, numtxtpak;
|
||||
|
|
@ -5079,6 +5095,7 @@ static void HandlePacketFromPlayer(SINT8 node)
|
|||
*/
|
||||
static void GetPackets(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
SINT8 node; // The packet sender
|
||||
|
||||
player_joining = false;
|
||||
|
|
@ -5283,6 +5300,7 @@ static INT16 Consistancy(void)
|
|||
// used during wipes to tell the server that a node is still connected
|
||||
static void CL_SendClientKeepAlive(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
netbuffer->packettype = PT_BASICKEEPALIVE;
|
||||
|
||||
HSendPacket(servernode, false, 0, 0);
|
||||
|
|
@ -5291,6 +5309,7 @@ static void CL_SendClientKeepAlive(void)
|
|||
static void SV_SendServerKeepAlive(void)
|
||||
{
|
||||
INT32 n;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
for (n = 1; n < MAXNETNODES; n++)
|
||||
{
|
||||
|
|
@ -5305,6 +5324,7 @@ static void SV_SendServerKeepAlive(void)
|
|||
// send the client packet to the server
|
||||
static void CL_SendClientCmd(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
size_t packetsize = 0;
|
||||
boolean mis = false;
|
||||
|
||||
|
|
@ -5407,6 +5427,7 @@ static void SV_SendTics(void)
|
|||
size_t packsize;
|
||||
UINT8 *bufpos;
|
||||
UINT8 *ntextcmd;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
// send to all client but not to me
|
||||
// for each node create a packet with x tics and send it
|
||||
|
|
@ -5732,6 +5753,7 @@ static inline void PingUpdate(void)
|
|||
INT32 i, j;
|
||||
boolean laggers[MAXPLAYERS];
|
||||
UINT8 numlaggers = 0;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
memset(laggers, 0, sizeof(boolean) * MAXPLAYERS);
|
||||
|
||||
netbuffer->packettype = PT_PING;
|
||||
|
|
|
|||
|
|
@ -403,7 +403,6 @@ extern UINT32 serverlistcount;
|
|||
extern INT32 mapchangepending;
|
||||
|
||||
// Points inside doomcom
|
||||
extern doomdata_t *netbuffer;
|
||||
extern consvar_t cv_stunserver;
|
||||
extern consvar_t cv_httpsource;
|
||||
extern consvar_t cv_kicktime;
|
||||
|
|
|
|||
30
src/d_net.c
30
src/d_net.c
|
|
@ -52,10 +52,6 @@ tic_t connectiontimeout = (10*TICRATE);
|
|||
|
||||
/// \brief network packet
|
||||
doomcom_t *doomcom = NULL;
|
||||
/// \brief network packet data, points inside doomcom
|
||||
doomdata_t *netbuffer = NULL;
|
||||
/// \brief hole punching packet, also points inside doomcom
|
||||
holepunch_t *holepunchpacket = NULL;
|
||||
|
||||
#ifdef DEBUGFILE
|
||||
FILE *debugfile = NULL; // put some net info in a file during the game
|
||||
|
|
@ -207,13 +203,9 @@ static netnode_t nodes[MAXNETNODES];
|
|||
// 0 if a = n (mod 256)
|
||||
// >0 if a > b (mod 256)
|
||||
// mnemonic: to use it compare to 0: cmpack(a,b)<0 is "a < b" ...
|
||||
FUNCMATH static INT32 cmpack(UINT8 a, UINT8 b)
|
||||
FUNCMATH static inline INT32 cmpack(UINT8 a, UINT8 b)
|
||||
{
|
||||
register INT32 d = a - b;
|
||||
|
||||
if (d >= 127 || d < -128)
|
||||
return -d;
|
||||
return d;
|
||||
return (SINT8)(a - b);
|
||||
}
|
||||
|
||||
/** Sets freeack to a free acknum and copies the netbuffer in the ackpak table
|
||||
|
|
@ -227,6 +219,8 @@ static boolean GetFreeAcknum(UINT8 *freeack, boolean lowtimer)
|
|||
netnode_t *node = &nodes[doomcom->remotenode];
|
||||
INT32 i, numfreeslot = 0;
|
||||
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
if (cmpack((UINT8)((node->remotefirstack + MAXACKTOSEND) % 256), node->nextacknum) < 0)
|
||||
{
|
||||
DEBFILE(va("too fast %d %d\n",node->remotefirstack,node->nextacknum));
|
||||
|
|
@ -339,6 +333,7 @@ static int Processackpak(void)
|
|||
INT32 i;
|
||||
int goodpacket = GPACK_OK;
|
||||
netnode_t *node = &nodes[doomcom->remotenode];
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
// Received an ack return, so remove the ack in the list
|
||||
if (netbuffer->ackreturn && cmpack(node->remotefirstack, netbuffer->ackreturn) < 0)
|
||||
|
|
@ -449,6 +444,7 @@ static int Processackpak(void)
|
|||
// send special packet with only ack on it
|
||||
void Net_SendAcks(INT32 node)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
netbuffer->packettype = PT_NOTHING;
|
||||
M_Memcpy(netbuffer->u.textcmd, nodes[node].acktosend, MAXACKTOSEND);
|
||||
HSendPacket(node, false, 0, MAXACKTOSEND);
|
||||
|
|
@ -458,6 +454,8 @@ static void GotAcks(void)
|
|||
{
|
||||
INT32 i, j;
|
||||
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
for (j = 0; j < MAXACKTOSEND; j++)
|
||||
if (netbuffer->u.textcmd[j])
|
||||
for (i = 0; i < MAXACKPACKETS; i++)
|
||||
|
|
@ -502,6 +500,7 @@ void Net_ConnectionTimeout(INT32 node)
|
|||
void Net_AckTicker(void)
|
||||
{
|
||||
INT32 i;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
for (i = 0; i < MAXACKPACKETS; i++)
|
||||
{
|
||||
|
|
@ -553,6 +552,7 @@ void Net_AckTicker(void)
|
|||
// (the higher layer doesn't have room, or something else ....)
|
||||
void Net_UnAcknowledgePacket(INT32 node)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
INT32 hm1 = (nodes[node].acktosend_head-1+MAXACKTOSEND) % MAXACKTOSEND;
|
||||
DEBFILE(va("UnAcknowledge node %d\n", node));
|
||||
if (!node)
|
||||
|
|
@ -720,6 +720,7 @@ void Net_CloseConnection(INT32 node)
|
|||
//
|
||||
static UINT32 NetbufferChecksum(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
UINT32 c = 0x1234567;
|
||||
const INT32 l = doomcom->datalength - 4;
|
||||
const UINT8 *buf = (UINT8 *)netbuffer + 4;
|
||||
|
|
@ -822,6 +823,8 @@ static const char *packettypename[NUMPACKETTYPE] =
|
|||
|
||||
static void DebugPrintpacket(const char *header)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
fprintf(debugfile, "%-12s (node %d,ack %d,ackret %d,size %d) type(%d) : %s\n",
|
||||
header, doomcom->remotenode, netbuffer->ack, netbuffer->ackreturn, doomcom->datalength,
|
||||
netbuffer->packettype, packettypename[netbuffer->packettype]);
|
||||
|
|
@ -1001,6 +1004,7 @@ void Command_Droprate(void)
|
|||
|
||||
static boolean ShouldDropPacket(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
return (packetdropquantity[netbuffer->packettype])
|
||||
|| (packetdroprate != 0 && rand() < (RAND_MAX * (packetdroprate / 100.f))) || packetdroprate == 100;
|
||||
}
|
||||
|
|
@ -1011,6 +1015,7 @@ static boolean ShouldDropPacket(void)
|
|||
//
|
||||
boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum, size_t packetlength)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
doomcom->datalength = (INT16)(packetlength + BASEPACKETSIZE);
|
||||
if (node == 0) // Packet is to go back to us
|
||||
{
|
||||
|
|
@ -1109,7 +1114,7 @@ boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum, size_t packetlen
|
|||
//
|
||||
boolean HGetPacket(void)
|
||||
{
|
||||
//boolean nodejustjoined;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
// Get a packet from self
|
||||
if (rebound_tail != rebound_head)
|
||||
|
|
@ -1352,9 +1357,6 @@ boolean D_CheckNetGame(void)
|
|||
if (doomcom->numnodes > MAXNETNODES)
|
||||
I_Error("Too many nodes (%d), max:%d", doomcom->numnodes, MAXNETNODES);
|
||||
|
||||
netbuffer = (doomdata_t *)(void *)&doomcom->data;
|
||||
holepunchpacket = (holepunch_t *)(void *)&doomcom->data;
|
||||
|
||||
#ifdef DEBUGFILE
|
||||
if (M_CheckParm("-debugfile"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include "p_setup.h"
|
||||
#include "s_sound.h"
|
||||
#include "i_sound.h"
|
||||
#include "i_net.h"
|
||||
#include "m_misc.h"
|
||||
#include "am_map.h"
|
||||
#include "byteptr.h"
|
||||
|
|
@ -4090,6 +4091,7 @@ static void Command_Changepassword_f(void)
|
|||
|
||||
static void Command_Login_f(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
#ifdef NOMD5
|
||||
// If we have no MD5 support then completely disable XD_LOGIN responses for security.
|
||||
CONS_Alert(CONS_NOTICE, "Remote administration commands are not supported in this build.\n");
|
||||
|
|
|
|||
|
|
@ -149,6 +149,7 @@ UINT8 *PutFileNeeded(UINT16 firstfile)
|
|||
{
|
||||
size_t i;
|
||||
UINT8 count = 0;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
UINT8 *p_start = netbuffer->packettype == PT_MOREFILESNEEDED ? netbuffer->u.filesneededcfg.files : netbuffer->u.serverinfo.fileneeded;
|
||||
UINT8 *p = p_start;
|
||||
char wadfilename[MAX_WADPATH] = "";
|
||||
|
|
@ -361,6 +362,7 @@ boolean CL_SendFileRequest(void)
|
|||
#ifdef MORELEGACYDOWNLOADER
|
||||
boolean firstloop = true;
|
||||
#endif
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
#ifdef PARANOIA
|
||||
if (M_CheckParm("-nodownload"))
|
||||
|
|
@ -492,9 +494,11 @@ tryagain:
|
|||
// returns false if a requested file was not found or cannot be sent
|
||||
boolean PT_RequestFile(INT32 node)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
char wad[MAX_WADPATH+1];
|
||||
UINT8 *p = netbuffer->u.textcmd;
|
||||
UINT8 id;
|
||||
|
||||
while (p < netbuffer->u.textcmd + MAXTEXTCMD) // Don't allow hacked client to overflow
|
||||
{
|
||||
id = READUINT8(p);
|
||||
|
|
@ -731,6 +735,7 @@ static void SV_PrepareSendLuaFileToNextNode(void)
|
|||
{
|
||||
INT32 i;
|
||||
UINT8 success = 1;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
// Find a client to send the file to
|
||||
for (i = 1; i < MAXNETNODES; i++)
|
||||
|
|
@ -835,6 +840,7 @@ void SV_AbortLuaFileTransfer(INT32 node)
|
|||
|
||||
void CL_PrepareDownloadLuaFile(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
// If there is no transfer in the list, this normally means the server
|
||||
// called io.open before us, so we have to wait until we call it too
|
||||
if (!luafiletransfers)
|
||||
|
|
@ -1101,6 +1107,7 @@ void FileSendTicker(void)
|
|||
size_t fragmentsize;
|
||||
filetx_t *f;
|
||||
INT32 packetsent, ram, i, j;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
// If someone is taking too long to download, kick them with a timeout
|
||||
// to prevent blocking the rest of the server...
|
||||
|
|
@ -1247,6 +1254,7 @@ void FileSendTicker(void)
|
|||
|
||||
void PT_FileAck(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
fileack_pak *packet = (void*)&netbuffer->u.fileack;
|
||||
INT32 node = doomcom->remotenode;
|
||||
filetran_t *trans = &transfer[node];
|
||||
|
|
@ -1301,6 +1309,7 @@ void PT_FileAck(void)
|
|||
void PT_FileReceived(void)
|
||||
{
|
||||
filetx_t *trans = transfer[doomcom->remotenode].txlist;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
if (trans && netbuffer->u.filereceived == trans->fileid)
|
||||
SV_EndFileSend(doomcom->remotenode);
|
||||
|
|
@ -1310,6 +1319,7 @@ static void SendAckPacket(fileack_pak *packet, UINT8 fileid)
|
|||
{
|
||||
size_t packetsize;
|
||||
INT32 i;
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
|
||||
packetsize = sizeof(*packet) + packet->numsegments * sizeof(*packet->segments);
|
||||
|
||||
|
|
@ -1391,6 +1401,7 @@ void FileReceiveTicker(void)
|
|||
|
||||
void PT_FileFragment(void)
|
||||
{
|
||||
doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
|
||||
filetx_pak *pak = (void*)&netbuffer->u.filetxpak;
|
||||
INT32 filenum = pak->fileid;
|
||||
fileneeded_t *file = &fileneeded[filenum];
|
||||
|
|
|
|||
|
|
@ -79,6 +79,8 @@ struct doomcom_t
|
|||
char data[MAXPACKETLENGTH];
|
||||
} ATTRPACK;
|
||||
|
||||
#define DOOMCOM_DATA(d) (doomdata_t *)&(d)->data
|
||||
|
||||
struct holepunch_t
|
||||
{
|
||||
INT32 magic;
|
||||
|
|
@ -86,12 +88,13 @@ struct holepunch_t
|
|||
INT16 port;
|
||||
} ATTRPACK;
|
||||
|
||||
#define HOLEPUNCH_DATA(d) (holepunch_t *)&(d)->data
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#pragma pack()
|
||||
#endif
|
||||
|
||||
extern doomcom_t *doomcom;
|
||||
extern holepunch_t *holepunchpacket;
|
||||
|
||||
/** \brief return packet in doomcom struct
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -579,6 +579,8 @@ void Command_Numnodes(void)
|
|||
|
||||
static boolean hole_punch(ssize_t c)
|
||||
{
|
||||
holepunch_t *holepunchpacket = HOLEPUNCH_DATA(doomcom);
|
||||
|
||||
if (cv_rendezvousserver.string[0] &&
|
||||
c == 10 && holepunchpacket->magic == hole_punch_magic)
|
||||
{
|
||||
|
|
@ -1415,6 +1417,7 @@ static void rendezvous(int size)
|
|||
static tic_t refreshtic = (tic_t)-1;
|
||||
|
||||
tic_t tic = I_GetTime();
|
||||
holepunch_t *holepunchpacket = HOLEPUNCH_DATA(doomcom);
|
||||
|
||||
if (tic != refreshtic)
|
||||
{
|
||||
|
|
@ -1441,6 +1444,7 @@ static void rendezvous(int size)
|
|||
static void SOCK_RequestHolePunch(INT32 node)
|
||||
{
|
||||
mysockaddr_t * addr = &clientaddress[node];
|
||||
holepunch_t *holepunchpacket = HOLEPUNCH_DATA(doomcom);
|
||||
|
||||
holepunchpacket->addr = addr->ip4.sin_addr.s_addr;
|
||||
holepunchpacket->port = addr->ip4.sin_port;
|
||||
|
|
|
|||
Loading…
Reference in a new issue