diff options
author | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2022-02-24 15:12:40 +0000 |
---|---|---|
committer | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2022-02-24 15:12:40 +0000 |
commit | 1fda5cab9d18346e049cf84a9e791bbf89b7a861 (patch) | |
tree | 352c27f2040c392d64a130ee366c04618758a451 | |
parent | 4f28a07d0562ca905bbcdb010b69604c330194bb (diff) | |
download | NorthstarLauncher-1fda5cab9d18346e049cf84a9e791bbf89b7a861.tar.gz NorthstarLauncher-1fda5cab9d18346e049cf84a9e791bbf89b7a861.zip |
fix uncommon race condition that creates "phantom" servers
-rw-r--r-- | NorthstarDedicatedTest/masterserver.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/NorthstarDedicatedTest/masterserver.cpp b/NorthstarDedicatedTest/masterserver.cpp index b08ebb90..b5f87274 100644 --- a/NorthstarDedicatedTest/masterserver.cpp +++ b/NorthstarDedicatedTest/masterserver.cpp @@ -897,6 +897,10 @@ void MasterServerManager::AddSelfToServerList( { Sleep(5000); + // defensive check, as m_ownServer could be set to null during the Sleep(5000) above + if (!*m_ownServerId) + return; + do { CURL* curl = curl_easy_init(); @@ -952,6 +956,11 @@ void MasterServerManager::AddSelfToServerList( curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime); CURLcode result = curl_easy_perform(curl); + + // defensive check, as m_ownServerId could be set to null before this request gets processed + if (!*m_ownServerId) + return; + if (result == CURLcode::CURLE_OK) { rapidjson_document serverAddedJson; @@ -1157,6 +1166,7 @@ void MasterServerManager::RemoveSelfFromServerList() curl, CURLOPT_URL, fmt::format("{}/server/remove_server?id={}", Cvar_ns_masterserver_hostname->GetString(), m_ownServerId).c_str()); + *m_ownServerId = 0; CURLcode result = curl_easy_perform(curl); if (result == CURLcode::CURLE_OK) |