diff --git a/src/game/editor/editor.cpp b/src/game/editor/editor.cpp index 2185d3363..ea6a8865e 100644 --- a/src/game/editor/editor.cpp +++ b/src/game/editor/editor.cpp @@ -8606,12 +8606,20 @@ void CEditor::HandleWriterFinishJobs() { CServerInfo CurrentServerInfo; Client()->GetServerInfo(&CurrentServerInfo); - NETADDR ServerAddr = Client()->ServerAddress(); - const unsigned char aIpv4Localhost[16] = {127, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - const unsigned char aIpv6Localhost[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; - // and if we're on localhost - if(!mem_comp(ServerAddr.ip, aIpv4Localhost, sizeof(aIpv4Localhost)) || !mem_comp(ServerAddr.ip, aIpv6Localhost, sizeof(aIpv6Localhost))) + NETADDR pAddr = Client()->ServerAddress(); + char aAddrStr[NETADDR_MAXSTRSIZE]; + net_addr_str(&Client()->ServerAddress(), aAddrStr, sizeof(aAddrStr), true); + + // and if we're on a local address + bool IsLocalAddress = false; + if(pAddr.ip[0] == 127 || pAddr.ip[0] == 10 || (pAddr.ip[0] == 192 && pAddr.ip[1] == 168) || (pAddr.ip[0] == 172 && (pAddr.ip[1] >= 16 && pAddr.ip[1] <= 31))) + IsLocalAddress = true; + + if(str_startswith(aAddrStr, "[fe80:") || str_startswith(aAddrStr, "[::1")) + IsLocalAddress = true; + + if(IsLocalAddress) { char aMapName[128]; IStorage::StripPathAndExtension(pJob->GetRealFileName(), aMapName, sizeof(aMapName));