diff options
| author | Tom Pratt <tom.pratt@outlook.com> | 2026-05-05 19:19:00 +0200 |
|---|---|---|
| committer | Tom Pratt <tompratt@squareup.com> | 2026-05-19 12:03:00 +0200 |
| commit | eb02680cb6ad8a8b700ccf37608c064fbb24fb8c (patch) | |
| tree | e40790087b1dc7767c50818779b8a7b428fa7003 /Source | |
| parent | 6655672ee3d15cceb9fdb73f4b16df9553fefeb1 (diff) | |
Separate out GetExternalIPAddress helper function
De-duplicates the two inline implementations and prepares it for use from Android.
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/NetPlayCommon.cpp | 15 | ||||
| -rw-r--r-- | Source/Core/Core/NetPlayCommon.h | 2 | ||||
| -rw-r--r-- | Source/Core/Core/NetPlayServer.cpp | 12 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp | 15 |
4 files changed, 22 insertions, 22 deletions
diff --git a/Source/Core/Core/NetPlayCommon.cpp b/Source/Core/Core/NetPlayCommon.cpp index f1a580cf09..0265d82aaa 100644 --- a/Source/Core/Core/NetPlayCommon.cpp +++ b/Source/Core/Core/NetPlayCommon.cpp @@ -9,6 +9,7 @@ #include <lzo/lzo1x.h> #include "Common/FileUtil.h" +#include "Common/HttpRequest.h" #include "Common/IOFile.h" #include "Common/MsgHandler.h" #include "Common/SFMLHelper.h" @@ -297,4 +298,18 @@ std::optional<std::vector<u8>> DecompressPacketIntoBuffer(sf::Packet& packet) return out_buffer; } + +std::string GetExternalIPAddress() +{ + Common::HttpRequest request; + // ENet does not support IPv6, so IPv4 has to be used + request.UseIPv4(); + Common::HttpRequest::Response response = + request.Get("https://ip.dolphin-emu.org/", {{"X-Is-Dolphin", "1"}}); + + if (response.has_value()) + return std::string(response->begin(), response->end()); + return ""; +} + } // namespace NetPlay diff --git a/Source/Core/Core/NetPlayCommon.h b/Source/Core/Core/NetPlayCommon.h index 0c95b49c2d..18b8744f06 100644 --- a/Source/Core/Core/NetPlayCommon.h +++ b/Source/Core/Core/NetPlayCommon.h @@ -20,6 +20,8 @@ using namespace std::chrono_literals; // connection is disconnected constexpr std::chrono::milliseconds PEER_TIMEOUT = 30s; +std::string GetExternalIPAddress(); + bool CompressFileIntoPacket(const std::string& file_path, sf::Packet& packet); bool CompressFolderIntoPacket(const std::string& folder_path, sf::Packet& packet); bool CompressBufferIntoPacket(std::span<const u8> in_buffer, sf::Packet& packet); diff --git a/Source/Core/Core/NetPlayServer.cpp b/Source/Core/Core/NetPlayServer.cpp index d26cc399c1..2faa5df1fa 100644 --- a/Source/Core/Core/NetPlayServer.cpp +++ b/Source/Core/Core/NetPlayServer.cpp @@ -24,7 +24,6 @@ #include "Common/CommonPaths.h" #include "Common/ENet.h" #include "Common/FileUtil.h" -#include "Common/HttpRequest.h" #include "Common/Logging/Log.h" #include "Common/MsgHandler.h" #include "Common/SFMLHelper.h" @@ -220,16 +219,9 @@ void NetPlayServer::SetupIndex() } else { - Common::HttpRequest request; - // ENet does not support IPv6, so IPv4 has to be used - request.UseIPv4(); - Common::HttpRequest::Response response = - request.Get("https://ip.dolphin-emu.org/", {{"X-Is-Dolphin", "1"}}); - - if (!response.has_value()) + session.server_id = GetExternalIPAddress(); + if (session.server_id.empty()) return; - - session.server_id = std::string(response->begin(), response->end()); } session.EncryptID(Config::Get(Config::NETPLAY_INDEX_PASSWORD)); diff --git a/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp b/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp index 6cadce9203..5282fdb9b9 100644 --- a/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp +++ b/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp @@ -30,7 +30,7 @@ #endif #include "Common/Config/Config.h" -#include "Common/HttpRequest.h" +#include "Core/NetPlayCommon.h" #include "Common/Logging/Log.h" #include "Common/TraversalClient.h" @@ -550,17 +550,8 @@ void NetPlayDialog::show(std::string nickname, bool use_traversal) void NetPlayDialog::ResetExternalIP() { - m_external_ip_address = Common::Lazy<std::string>([]() -> std::string { - Common::HttpRequest request; - // ENet does not support IPv6, so IPv4 has to be used - request.UseIPv4(); - Common::HttpRequest::Response response = - request.Get("https://ip.dolphin-emu.org/", {{"X-Is-Dolphin", "1"}}); - - if (response.has_value()) - return std::string(response->begin(), response->end()); - return ""; - }); + m_external_ip_address = + Common::Lazy<std::string>([]() -> std::string { return NetPlay::GetExternalIPAddress(); }); } void NetPlayDialog::UpdateDiscordPresence() |
