From c6748edcc98201414834fdb0f464967c5c38f314 Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Sun, 30 Apr 2023 11:34:47 +0200 Subject: [PATCH] Reboot RCON server if 'net_usesocketsforloopback' changed Reboot so it could update accordingly, just like the game's UDP sockets. --- r5dev/tier1/cvar.cpp | 1 + r5dev/vstdlib/callback.cpp | 27 +++++++++++++++++++++++++++ r5dev/vstdlib/callback.h | 1 + 3 files changed, 29 insertions(+) diff --git a/r5dev/tier1/cvar.cpp b/r5dev/tier1/cvar.cpp index 903c4643..f31ddaa2 100644 --- a/r5dev/tier1/cvar.cpp +++ b/r5dev/tier1/cvar.cpp @@ -551,6 +551,7 @@ void ConVar::InitShipped(void) mp_gamemode->RemoveFlags(FCVAR_DEVELOPMENTONLY); mp_gamemode->RemoveChangeCallback(mp_gamemode->m_fnChangeCallbacks[0]); mp_gamemode->InstallChangeCallback(MP_GameMode_Changed_f, false); + net_usesocketsforloopback->InstallChangeCallback(NET_UseSocketsForLoopbackChanged_f, false); } //----------------------------------------------------------------------------- diff --git a/r5dev/vstdlib/callback.cpp b/r5dev/vstdlib/callback.cpp index 42a28bcc..e1335eba 100644 --- a/r5dev/vstdlib/callback.cpp +++ b/r5dev/vstdlib/callback.cpp @@ -736,6 +736,33 @@ void NET_UseRandomKeyChanged_f(IConVar* pConVar, const char* pOldString, float f } } +/* +===================== +NET_UseSocketsForLoopbackChanged_f + + Use random AES encryption + key for game packets +===================== +*/ +void NET_UseSocketsForLoopbackChanged_f(IConVar* pConVar, const char* pOldString, float flOldValue) +{ + if (ConVar* pConVarRef = g_pCVar->FindVar(pConVar->GetCommandName())) + { + if (strcmp(pOldString, pConVarRef->GetString()) == NULL) + return; // Same value. + +#ifndef CLIENT_DLL + // Reboot the RCON server to switch address type. + if (RCONServer()->IsInitialized()) + { + DevMsg(eDLL_T::SERVER, "Rebooting RCON server...\n"); + RCONServer()->Shutdown(); + RCONServer()->Init(); + } +#endif // !CLIENT_DLL + } +} + /* ===================== SIG_GetAdr_f diff --git a/r5dev/vstdlib/callback.h b/r5dev/vstdlib/callback.h index 9b8784ef..3938e6c5 100644 --- a/r5dev/vstdlib/callback.h +++ b/r5dev/vstdlib/callback.h @@ -39,6 +39,7 @@ void VPK_Unmount_f(const CCommand& args); void NET_SetKey_f(const CCommand& args); void NET_GenerateKey_f(const CCommand& args); void NET_UseRandomKeyChanged_f(IConVar* pConVar, const char* pOldString, float flOldValue); +void NET_UseSocketsForLoopbackChanged_f(IConVar* pConVar, const char* pOldString, float flOldValue); void SIG_GetAdr_f(const CCommand& args); void CON_Help_f(const CCommand& args); #ifndef DEDICATED