[Network]: Better patch (#1032)
This commit is contained in:
parent
2805c3fb2f
commit
9e036e5174
@ -319,33 +319,6 @@ namespace Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Network::Sys_StringToSockaddr_Hk(const char* s, sockaddr* sadr)
|
|
||||||
{
|
|
||||||
hostent* h;
|
|
||||||
ZeroMemory(sadr, sizeof(*sadr));
|
|
||||||
|
|
||||||
((sockaddr_in*)sadr)->sin_family = AF_INET;
|
|
||||||
((sockaddr_in*)sadr)->sin_port = 0;
|
|
||||||
|
|
||||||
if (Game::I_isdigit(*s))
|
|
||||||
{
|
|
||||||
// ReSharper disable once CppDeprecatedEntity
|
|
||||||
*(int*)&((sockaddr_in*)sadr)->sin_addr = static_cast<int>(::inet_addr(s));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// ReSharper disable once CppDeprecatedEntity
|
|
||||||
if ((h = ::gethostbyname(s)) == nullptr)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
*(int*)&((sockaddr_in*)sadr)->sin_addr = *(int*)h->h_addr_list[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Network::Network()
|
Network::Network()
|
||||||
{
|
{
|
||||||
AssertSize(Game::netadr_t, 20);
|
AssertSize(Game::netadr_t, 20);
|
||||||
@ -376,10 +349,6 @@ namespace Components
|
|||||||
// Handle client packets
|
// Handle client packets
|
||||||
Utils::Hook(0x5AA703, CL_HandleCommandStub, HOOK_JUMP).install()->quick();
|
Utils::Hook(0x5AA703, CL_HandleCommandStub, HOOK_JUMP).install()->quick();
|
||||||
|
|
||||||
// Use the version of Sys_StringToSockaddr made by 3arc
|
|
||||||
Utils::Hook(0x44E23C, Sys_StringToSockaddr_Hk, HOOK_CALL).install()->quick();
|
|
||||||
Utils::Hook(0x64D480, Sys_StringToSockaddr_Hk, HOOK_CALL).install()->quick();
|
|
||||||
|
|
||||||
// Disable unused OOB packets handlers just to be sure
|
// Disable unused OOB packets handlers just to be sure
|
||||||
Utils::Hook::Set<std::uint8_t>(0x5AA5B6, 0xEB); // CL_SteamServerAuth
|
Utils::Hook::Set<std::uint8_t>(0x5AA5B6, 0xEB); // CL_SteamServerAuth
|
||||||
Utils::Hook::Set<std::uint8_t>(0x5AA69F, 0xEB); // echo
|
Utils::Hook::Set<std::uint8_t>(0x5AA69F, 0xEB); // echo
|
||||||
@ -411,8 +380,13 @@ namespace Components
|
|||||||
|
|
||||||
// Do not run UPNP stuff at all
|
// Do not run UPNP stuff at all
|
||||||
Utils::Hook::Set<std::uint8_t>(0x48A135, 0xC3);
|
Utils::Hook::Set<std::uint8_t>(0x48A135, 0xC3);
|
||||||
|
Utils::Hook::Nop(0x48A135 + 1, 4);
|
||||||
|
|
||||||
Utils::Hook::Set<std::uint8_t>(0x48A151, 0xC3);
|
Utils::Hook::Set<std::uint8_t>(0x48A151, 0xC3);
|
||||||
Utils::Hook::Nop(0x684080, 5); // Don't spam the console
|
Utils::Hook::Nop(0x48A151 + 1, 4);
|
||||||
|
|
||||||
|
// Don't spam the console
|
||||||
|
Utils::Hook(0x684080, Game::Com_DPrintf, HOOK_CALL).install()->quick();
|
||||||
|
|
||||||
// Disable the IWNet IP detection (default 'got ipdetect' flag to 1)
|
// Disable the IWNet IP detection (default 'got ipdetect' flag to 1)
|
||||||
Utils::Hook::Set<std::uint8_t>(0x649D6F0, 1);
|
Utils::Hook::Set<std::uint8_t>(0x649D6F0, 1);
|
||||||
|
@ -81,8 +81,6 @@ namespace Components
|
|||||||
static bool CL_HandleCommand(Game::netadr_t* address, const char* command, Game::msg_t* message);
|
static bool CL_HandleCommand(Game::netadr_t* address, const char* command, Game::msg_t* message);
|
||||||
|
|
||||||
static void CL_HandleCommandStub();
|
static void CL_HandleCommandStub();
|
||||||
|
|
||||||
static int Sys_StringToSockaddr_Hk(const char* s, sockaddr* sadr);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ namespace Game
|
|||||||
|
|
||||||
Com_Error_t Com_Error = Com_Error_t(0x4B22D0);
|
Com_Error_t Com_Error = Com_Error_t(0x4B22D0);
|
||||||
Com_Printf_t Com_Printf = Com_Printf_t(0x402500);
|
Com_Printf_t Com_Printf = Com_Printf_t(0x402500);
|
||||||
|
Com_DPrintf_t Com_DPrintf = Com_DPrintf_t(0x413490);
|
||||||
Com_PrintError_t Com_PrintError = Com_PrintError_t(0x4F8C70);
|
Com_PrintError_t Com_PrintError = Com_PrintError_t(0x4F8C70);
|
||||||
Com_PrintWarning_t Com_PrintWarning = Com_PrintWarning_t(0x4E0200);
|
Com_PrintWarning_t Com_PrintWarning = Com_PrintWarning_t(0x4E0200);
|
||||||
Com_PrintMessage_t Com_PrintMessage = Com_PrintMessage_t(0x4AA830);
|
Com_PrintMessage_t Com_PrintMessage = Com_PrintMessage_t(0x4AA830);
|
||||||
|
@ -20,6 +20,9 @@ namespace Game
|
|||||||
typedef void(*Com_Printf_t)(int channel, const char* fmt, ...);
|
typedef void(*Com_Printf_t)(int channel, const char* fmt, ...);
|
||||||
extern Com_Printf_t Com_Printf;
|
extern Com_Printf_t Com_Printf;
|
||||||
|
|
||||||
|
typedef void(*Com_DPrintf_t)(int channel, const char* fmt, ...);
|
||||||
|
extern Com_DPrintf_t Com_DPrintf;
|
||||||
|
|
||||||
typedef void(*Com_PrintError_t)(int channel, const char* fmt, ...);
|
typedef void(*Com_PrintError_t)(int channel, const char* fmt, ...);
|
||||||
extern Com_PrintError_t Com_PrintError;
|
extern Com_PrintError_t Com_PrintError;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user