mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-01-14 05:41:02 +00:00
Fix servers disappearing from the server list when you refresh, by forcefully closing connnections to the servers immediately after sending ASKINFO. Also force close connections to old server list when refreshing, because we don't need to hear from them anymore full stop.
This commit is contained in:
parent
948466658f
commit
3acc312923
1 changed files with 17 additions and 2 deletions
|
@ -1623,6 +1623,8 @@ static void SendAskInfo(INT32 node, boolean viams)
|
|||
serverelem_t serverlist[MAXSERVERLIST];
|
||||
UINT32 serverlistcount = 0;
|
||||
|
||||
#define FORCECLOSE 0x8000
|
||||
|
||||
static void SL_ClearServerList(INT32 connectedserver)
|
||||
{
|
||||
UINT32 i;
|
||||
|
@ -1630,7 +1632,7 @@ static void SL_ClearServerList(INT32 connectedserver)
|
|||
for (i = 0; i < serverlistcount; i++)
|
||||
if (connectedserver != serverlist[i].node)
|
||||
{
|
||||
Net_CloseConnection(serverlist[i].node);
|
||||
Net_CloseConnection(serverlist[i].node|FORCECLOSE);
|
||||
serverlist[i].node = 0;
|
||||
}
|
||||
serverlistcount = 0;
|
||||
|
@ -1712,12 +1714,25 @@ void CL_UpdateServerList(boolean internetsearch, INT32 room)
|
|||
// Make sure MS version matches our own, to
|
||||
// thwart nefarious servers who lie to the MS.
|
||||
|
||||
if(strcmp(version, server_list[i].version) == 0)
|
||||
if (strcmp(version, server_list[i].version) == 0)
|
||||
{
|
||||
INT32 node = I_NetMakeNodewPort(server_list[i].ip, server_list[i].port);
|
||||
if (node == -1)
|
||||
break; // no more node free
|
||||
SendAskInfo(node, true);
|
||||
// Force close the connection so that servers can't eat
|
||||
// up nodes forever if we never get a reply back from them
|
||||
// (usually when they've not forwarded their ports).
|
||||
//
|
||||
// Don't worry, we'll get in contact with the working
|
||||
// servers again when they send SERVERINFO to us later!
|
||||
//
|
||||
// (Note: as a side effect this probably means every
|
||||
// server in the list will probably be using the same node (e.g. node 1),
|
||||
// not that it matters which nodes they use when
|
||||
// the connections are closed afterwards anyway)
|
||||
// -- Monster Iestyn 12/11/18
|
||||
Net_CloseConnection(node|FORCECLOSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue