summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorTom Pratt <tom.pratt@outlook.com>2026-05-05 19:19:00 +0200
committerTom Pratt <tompratt@squareup.com>2026-05-19 12:03:00 +0200
commiteb02680cb6ad8a8b700ccf37608c064fbb24fb8c (patch)
treee40790087b1dc7767c50818779b8a7b428fa7003 /Source/Core
parent6655672ee3d15cceb9fdb73f4b16df9553fefeb1 (diff)
Separate out GetExternalIPAddress helper function
De-duplicates the two inline implementations and prepares it for use from Android.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/NetPlayCommon.cpp15
-rw-r--r--Source/Core/Core/NetPlayCommon.h2
-rw-r--r--Source/Core/Core/NetPlayServer.cpp12
-rw-r--r--Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp15
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()