aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/sockets/sfdnsres.cpp
diff options
context:
space:
mode:
authorCalchan <denis.dupeyron@gmail.com>2025-10-03 04:46:27 +0200
committercrueter <crueter@eden-emu.dev>2025-10-03 04:46:27 +0200
commitf4f3425d86c7e1ed4b9094365cd39cc0bfa174a5 (patch)
tree48d197a9a919a0cfc2e688aad4ce8b7205be1c9c /src/core/hle/service/sockets/sfdnsres.cpp
parent9173eec402f9da453dee4f56c883ac5df665d3f6 (diff)
[sockets] block more domains (#2632)
* Bring in the domain-blocking code from the legacy branch * Make blockedDomains a `static constexpr const std::array<std::string,6>` Co-authored-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2632 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: crueter <crueter@eden-emu.dev> Co-authored-by: Calchan <denis.dupeyron@gmail.com> Co-committed-by: Calchan <denis.dupeyron@gmail.com>
Diffstat (limited to 'src/core/hle/service/sockets/sfdnsres.cpp')
-rw-r--r--src/core/hle/service/sockets/sfdnsres.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/core/hle/service/sockets/sfdnsres.cpp b/src/core/hle/service/sockets/sfdnsres.cpp
index b07bd3e58e..68d73f0a59 100644
--- a/src/core/hle/service/sockets/sfdnsres.cpp
+++ b/src/core/hle/service/sockets/sfdnsres.cpp
@@ -53,6 +53,19 @@ enum class NetDbError : s32 {
NoData = 4,
};
+static const constexpr std::array blockedDomains = {"srv.nintendo.net",
+ "battle.net",
+ "microsoft.com",
+ "mojang.com",
+ "xboxlive.com",
+ "minecraftservices.com"};
+
+static bool IsBlockedHost(const std::string& host) {
+ return std::any_of(
+ blockedDomains.begin(), blockedDomains.end(),
+ [&host](const std::string& domain) { return host.find(domain) != std::string::npos; });
+}
+
static NetDbError GetAddrInfoErrorToNetDbError(GetAddrInfoError result) {
// These combinations have been verified on console (but are not
// exhaustive).
@@ -154,7 +167,7 @@ static std::pair<u32, GetAddrInfoError> GetHostByNameRequestImpl(HLERequestConte
// For now, ignore options, which are in input buffer 1 for GetHostByNameRequestWithOptions.
// Prevent resolution of Nintendo servers
- if (host.find("srv.nintendo.net") != std::string::npos) {
+ if (IsBlockedHost(host)) {
LOG_WARNING(Network, "Resolution of hostname {} requested, returning EAI_AGAIN", host);
return {0, GetAddrInfoError::AGAIN};
}
@@ -271,7 +284,7 @@ static std::pair<u32, GetAddrInfoError> GetAddrInfoRequestImpl(HLERequestContext
const std::string host = Common::StringFromBuffer(host_buffer);
// Prevent resolution of Nintendo servers
- if (host.find("srv.nintendo.net") != std::string::npos) {
+ if (IsBlockedHost(host)) {
LOG_WARNING(Network, "Resolution of hostname {} requested, returning EAI_AGAIN", host);
return {0, GetAddrInfoError::AGAIN};
}
@@ -359,5 +372,4 @@ void SFDNSRES::ResolverSetOptionRequest(HLERequestContext& ctx) {
rb.Push(ResultSuccess);
rb.Push<s32>(0); // bsd errno
}
-
} // namespace Service::Sockets