Просмотр исходного кода

service: bcat: Check client connection before interacting with socket.

- Fixes a crash when BCAT service is offline.
bunnei 5 лет назад
Родитель
Сommit
363c644730
1 измененных файлов с 10 добавлено и 0 удалено
  1. 10 0
      src/core/hle/service/bcat/backend/boxcat.cpp

+ 10 - 0
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)},
         {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);
     const auto response = client.Get(BOXCAT_PATHNAME_EVENTS, headers);
     if (response == nullptr)
     if (response == nullptr)
         return StatusResult::Offline;
         return StatusResult::Offline;