diff --git a/rpcs3/Emu/Cell/Modules/sceNp.cpp b/rpcs3/Emu/Cell/Modules/sceNp.cpp index 9ed16d56ac..e93d8c405e 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp.cpp +++ b/rpcs3/Emu/Cell/Modules/sceNp.cpp @@ -5300,7 +5300,10 @@ error_code sceNpSignalingGetConnectionStatus(u32 ctx_id, u32 conn_id, vm::ptrconn_status; diff --git a/rpcs3/Emu/Cell/Modules/sceNp2.cpp b/rpcs3/Emu/Cell/Modules/sceNp2.cpp index 91c62e7290..cebda52426 100644 --- a/rpcs3/Emu/Cell/Modules/sceNp2.cpp +++ b/rpcs3/Emu/Cell/Modules/sceNp2.cpp @@ -448,21 +448,33 @@ error_code sceNpMatching2SignalingGetConnectionStatus( auto [res, npid] = nph.local_get_npid(roomId, memberId); if (res) + { + *connStatus = SCE_NP_SIGNALING_CONN_STATUS_INACTIVE; return res; + } if (np::is_same_npid(nph.get_npid(), *npid)) + { + *connStatus = SCE_NP_SIGNALING_CONN_STATUS_INACTIVE; return SCE_NP_SIGNALING_ERROR_OWN_NP_ID; + } auto& sigh = g_fxo->get>(); auto conn_id = sigh.get_conn_id_from_npid(*npid); if (!conn_id) + { + *connStatus = SCE_NP_SIGNALING_CONN_STATUS_INACTIVE; return SCE_NP_SIGNALING_ERROR_CONN_NOT_FOUND; + } const auto si = sigh.get_sig_infos(*conn_id); if (!si) + { + *connStatus = SCE_NP_SIGNALING_CONN_STATUS_INACTIVE; return SCE_NP_SIGNALING_ERROR_CONN_NOT_FOUND; + } *connStatus = si->conn_status;