diff options
author | bunnei <bunneidev@gmail.com> | 2020-10-15 20:58:18 -0700 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2020-10-16 21:16:56 -0700 |
commit | 363c644730198338140d9611b575ff22e14e1287 (patch) | |
tree | af9da56c8c61f3f46a46de29cde4294f09bc2c71 | |
parent | 64f967fd4958abb5a02191a81e91fc8b33bcf4c5 (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.cpp | 10 |
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; |