Try to fix the flat api get public ip function.

merge-requests/28/head
Mr_Goldberg 2020-01-17 11:36:46 -05:00
parent 60b627163a
commit a2f8fec816
No known key found for this signature in database
GPG Key ID: 8597D87419DEF278
3 changed files with 15 additions and 2 deletions

View File

@ -134,6 +134,12 @@ Steam_Client *get_steam_clientserver_old()
return get_steam_client();
}
static bool steamclient_has_ipv6_functions_flag;
bool steamclient_has_ipv6_functions()
{
return steamclient_has_ipv6_functions_flag;
}
static void *create_client_interface(const char *ver)
{
if (strstr(ver, "SteamClient") == ver) {
@ -167,8 +173,10 @@ static void *create_client_interface(const char *ver)
steam_client = (ISteamClient019 *)get_steam_client();
} else if (strcmp(ver, STEAMCLIENT_INTERFACE_VERSION) == 0) {
steam_client = (ISteamClient *)get_steam_client();
steamclient_has_ipv6_functions_flag = true;
} else {
steam_client = (ISteamClient *)get_steam_client();
steamclient_has_ipv6_functions_flag = true;
}
return steam_client;

View File

@ -26,3 +26,4 @@
#endif
Steam_Client *get_steam_client();
bool steamclient_has_ipv6_functions();

View File

@ -4909,10 +4909,14 @@ STEAMAPI_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation(intptr
return ((ISteamGameServer *)instancePtr)->GetServerReputation();
}
STEAMAPI_API struct SteamIPAddress_t SteamAPI_ISteamGameServer_GetPublicIP(intptr_t instancePtr)
STEAMAPI_API uint32 SteamAPI_ISteamGameServer_GetPublicIP(intptr_t instancePtr, void *instancePtr_possible)
{
//TODO: check if this actually works (ret value changed from uint32 to struct)
return ((ISteamGameServer *)instancePtr)->GetPublicIP();
if (steamclient_has_ipv6_functions()) {
return ((ISteamGameServer012 *)instancePtr_possible)->GetPublicIP_old();
} else {
return ((ISteamGameServer012 *)instancePtr)->GetPublicIP_old();
}
}
STEAMAPI_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket(intptr_t instancePtr, const void * pData, int cbData, uint32 srcIP, uint16 srcPort)