From 2ff6503786e939dda4e6eb05c8ec6a9ad67a9827 Mon Sep 17 00:00:00 2001 From: Adrian <78108584+AdrianCassar@users.noreply.github.com> Date: Fri, 8 Dec 2023 00:18:59 +0000 Subject: [PATCH] [Xlivebase] Fixed GetServiceInfo --- src/xenia/kernel/xam/apps/xlivebase_app.cc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/xenia/kernel/xam/apps/xlivebase_app.cc b/src/xenia/kernel/xam/apps/xlivebase_app.cc index ec6c24f54f..144f7d3992 100644 --- a/src/xenia/kernel/xam/apps/xlivebase_app.cc +++ b/src/xenia/kernel/xam/apps/xlivebase_app.cc @@ -171,21 +171,26 @@ X_HRESULT XLiveBaseApp::DispatchMessageSync(uint32_t message, X_HRESULT XLiveBaseApp::GetServiceInfo(uint32_t serviceid, uint32_t serviceinfo) { - if (serviceid == NULL) { - return 0x80151802; // ERROR_CONNECTION_INVALID + if (serviceinfo == NULL) { + return -1; // ERROR_FUNCTION_FAILED } XLiveAPI::XONLINE_SERVICE_INFO* service_info = reinterpret_cast( - memory_->TranslateVirtual(serviceid)); + memory_->TranslateVirtual(serviceinfo)); memset(service_info, 0, sizeof(XLiveAPI::XONLINE_SERVICE_INFO)); XLiveAPI::XONLINE_SERVICE_INFO retrieved_service_info = - XLiveAPI::GetServiceInfoById(serviceinfo); - - service_info->ip.s_addr = retrieved_service_info.ip.s_addr; - service_info->port = retrieved_service_info.port; + XLiveAPI::GetServiceInfoById(serviceid); + + if (retrieved_service_info.ip.s_addr == 0) { + return 0x80151100; // ERROR_SERVICE_NOT_FOUND + // return 0x80151802; // ERROR_CONNECTION_INVALID + } else { + service_info->ip.s_addr = retrieved_service_info.ip.s_addr; + service_info->port = retrieved_service_info.port; + } return X_E_SUCCESS; }