mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-03-10 07:24:54 +01:00
signaling_handler: bugfix and cleanup
This commit is contained in:
parent
ff992a67c8
commit
a29758de6e
|
|
@ -377,7 +377,7 @@ namespace np
|
|||
|
||||
if (!rooms.contains(room_id))
|
||||
{
|
||||
np_cache.error("np_cache::get_memberid cache miss room_id: room_id(%d)/npid(%s)", room_id, static_cast<const char*>(npid.handle.data));
|
||||
np_cache.error("np_cache::get_memberid cache miss room_id: room_id(%d)/npid(%s)", room_id, np::npid_to_string(npid));
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
|
|
@ -389,7 +389,7 @@ namespace np
|
|||
return id;
|
||||
}
|
||||
|
||||
np_cache.error("np_cache::get_memberid cache miss member_id: room_id(%d)/npid(%s)", room_id, static_cast<const char*>(npid.handle.data));
|
||||
np_cache.error("np_cache::get_memberid cache miss member_id: room_id(%d)/npid(%s)", room_id, np::npid_to_string(npid));
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1361,7 +1361,7 @@ namespace np
|
|||
|
||||
player_history& np_handler::get_player_and_set_timestamp(const SceNpId& npid, u64 timestamp)
|
||||
{
|
||||
std::string npid_str = std::string(npid.handle.data);
|
||||
std::string npid_str = np::npid_to_string(npid);
|
||||
|
||||
if (!players_history.contains(npid_str))
|
||||
{
|
||||
|
|
@ -1641,7 +1641,7 @@ namespace np
|
|||
return SCE_NP_BASIC_ERROR_NOT_CONNECTED;
|
||||
}
|
||||
|
||||
auto friend_infos = rpcn->get_friend_presence_by_npid(std::string(npid.handle.data));
|
||||
auto friend_infos = rpcn->get_friend_presence_by_npid(np::npid_to_string(npid));
|
||||
if (!friend_infos)
|
||||
{
|
||||
return SCE_NP_BASIC_ERROR_INVALID_ARGUMENT;
|
||||
|
|
|
|||
|
|
@ -89,6 +89,13 @@ namespace np
|
|||
// npid->reserved[0] = 1;
|
||||
}
|
||||
|
||||
std::string npid_to_string(const SceNpId& npid)
|
||||
{
|
||||
char npid_str[17]{};
|
||||
std::memcpy(npid_str, npid.handle.data, 16);
|
||||
return std::string(npid_str);
|
||||
}
|
||||
|
||||
void string_to_online_name(std::string_view str, SceNpOnlineName& online_name)
|
||||
{
|
||||
memset(&online_name, 0, sizeof(online_name));
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ namespace np
|
|||
std::optional<SceNpCommunicationId> string_to_communication_id(std::string_view str);
|
||||
|
||||
void string_to_npid(std::string_view str, SceNpId& npid);
|
||||
std::string npid_to_string(const SceNpId& npid);
|
||||
void string_to_online_name(std::string_view str, SceNpOnlineName& online_name);
|
||||
void string_to_avatar_url(std::string_view str, SceNpAvatarUrl& avatar_url);
|
||||
void strings_to_userinfo(std::string_view npid, std::string_view online_name, std::string_view avatar_url, SceNpUserInfo& user_info);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ namespace np
|
|||
const u16 member_id = notif_data->roomMemberDataInternal->memberId;
|
||||
const SceNpId& npid = notif_data->roomMemberDataInternal->userInfo.npId;
|
||||
|
||||
rpcn_log.notice("Join notification told to connect to member(%d=%s) of room(%d): %s:%d", member_id, reinterpret_cast<const char*>(npid.handle.data), room_id, ip_to_string(addr_p2p), port_p2p);
|
||||
rpcn_log.notice("Join notification told to connect to member(%d=%s) of room(%d): %s:%d", member_id, np::npid_to_string(npid), room_id, ip_to_string(addr_p2p), port_p2p);
|
||||
|
||||
// Attempt Signaling
|
||||
auto& sigh = g_fxo->get<named_thread<signaling_handler>>();
|
||||
|
|
|
|||
|
|
@ -2318,7 +2318,7 @@ namespace rpcn
|
|||
{
|
||||
np2_structs::GetScoreGameDataRequest pb_req;
|
||||
pb_req.set_boardid(board_id);
|
||||
pb_req.set_npid(reinterpret_cast<const char*>(npid.handle.data));
|
||||
pb_req.set_npid(np::npid_to_string(npid));
|
||||
pb_req.set_pcid(pc_id);
|
||||
|
||||
std::string serialized;
|
||||
|
|
|
|||
|
|
@ -426,9 +426,10 @@ void signaling_handler::operator()()
|
|||
if (sig.sig_info->time_last_msg_recvd < now - 60s && cmd != signal_info)
|
||||
{
|
||||
// We had no connection to opponent for 60 seconds, consider the connection dead
|
||||
auto retire_info = sig.sig_info;
|
||||
sign_log.notice("Timeout disconnection");
|
||||
update_si_status(sig.sig_info, SCE_NP_SIGNALING_CONN_STATUS_INACTIVE, SCE_NP_SIGNALING_ERROR_TIMEOUT);
|
||||
retire_packet(sig.sig_info, signal_ping); // Retire ping packet if necessary
|
||||
update_si_status(retire_info, SCE_NP_SIGNALING_CONN_STATUS_INACTIVE, SCE_NP_SIGNALING_ERROR_TIMEOUT);
|
||||
retire_packet(retire_info, signal_ping); // Retire ping packet if necessary
|
||||
break; // qpackets has been emptied of all packets for this user so we're requeuing
|
||||
}
|
||||
|
||||
|
|
@ -784,7 +785,7 @@ void signaling_handler::send_information_packets(u32 addr, u16 port, const SceNp
|
|||
|
||||
u32 signaling_handler::get_always_conn_id(const SceNpId& npid)
|
||||
{
|
||||
std::string npid_str(reinterpret_cast<const char*>(npid.handle.data));
|
||||
std::string npid_str = np::npid_to_string(npid);
|
||||
if (npid_to_conn_id.contains(npid_str))
|
||||
return ::at32(npid_to_conn_id, npid_str);
|
||||
|
||||
|
|
@ -810,9 +811,8 @@ u32 signaling_handler::init_sig1(const SceNpId& npid)
|
|||
sig_peers[conn_id]->conn_status = SCE_NP_SIGNALING_CONN_STATUS_PENDING;
|
||||
|
||||
// Request peer infos from RPCN
|
||||
std::string npid_str(reinterpret_cast<const char*>(npid.handle.data));
|
||||
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
|
||||
nph.req_sign_infos(npid_str, conn_id);
|
||||
nph.req_sign_infos(np::npid_to_string(npid), conn_id);
|
||||
}
|
||||
|
||||
return conn_id;
|
||||
|
|
@ -839,7 +839,7 @@ std::optional<u32> signaling_handler::get_conn_id_from_npid(const SceNpId& npid)
|
|||
{
|
||||
std::lock_guard lock(data_mutex);
|
||||
|
||||
std::string npid_str(reinterpret_cast<const char*>(npid.handle.data));
|
||||
std::string npid_str = np::npid_to_string(npid);
|
||||
if (npid_to_conn_id.contains(npid_str))
|
||||
return ::at32(npid_to_conn_id, npid_str);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue