summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-10-15 20:58:18 -0700
committerbunnei <bunneidev@gmail.com>2020-10-16 21:16:56 -0700
commit363c644730198338140d9611b575ff22e14e1287 (patch)
treeaf9da56c8c61f3f46a46de29cde4294f09bc2c71
parent64f967fd4958abb5a02191a81e91fc8b33bcf4c5 (diff)
service: bcat: Check client connection before interacting with socket.
- Fixes a crash when BCAT service is offline.
-rw-r--r--src/core/hle/service/bcat/backend/boxcat.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/core/hle/service/bcat/backend/boxcat.cpp b/src/core/hle/service/bcat/backend/boxcat.cpp
index 589e288df..3b6f7498e 100644
--- a/src/core/hle/service/bcat/backend/boxcat.cpp
+++ b/src/core/hle/service/bcat/backend/boxcat.cpp
@@ -454,6 +454,16 @@ Boxcat::StatusResult Boxcat::GetStatus(std::optional<std::string>& global,
{std::string("Boxcat-Client-Type"), std::string(BOXCAT_CLIENT_TYPE)},
};
+ if (!client.is_valid()) {
+ LOG_ERROR(Service_BCAT, "Client is invalid, going offline!");
+ return StatusResult::Offline;
+ }
+
+ if (!client.is_socket_open()) {
+ LOG_ERROR(Service_BCAT, "Failed to open socket, going offline!");
+ return StatusResult::Offline;
+ }
+
const auto response = client.Get(BOXCAT_PATHNAME_EVENTS, headers);
if (response == nullptr)
return StatusResult::Offline;