diff --git a/rpcs3/Emu/Cell/lv2/sys_net.cpp b/rpcs3/Emu/Cell/lv2/sys_net.cpp index a8aaa260ae..0d05bd9fc8 100644 --- a/rpcs3/Emu/Cell/lv2/sys_net.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_net.cpp @@ -598,7 +598,7 @@ struct nt_p2p_port auto send_ack = [&]() { auto final_ack = sock.p2ps.data_beg_seq; - while (sock.p2ps.received_data.count(final_ack)) + while (sock.p2ps.received_data.contains(final_ack)) { final_ack += sock.p2ps.received_data.at(final_ack).size(); } @@ -840,7 +840,7 @@ struct nt_p2p_port { std::lock_guard lock(bound_p2p_vports_mutex); - if (bound_p2p_vports.count(dst_vport)) + if (bound_p2p_vports.contains(dst_vport)) { sys_net_sockaddr_in_p2p p2p_addr{}; @@ -938,7 +938,7 @@ struct nt_p2p_port { std::lock_guard lock(bound_p2p_vports_mutex); - if (bound_p2p_streams.count(key_connected)) + if (bound_p2p_streams.contains(key_connected)) { const auto sock_id = bound_p2p_streams.at(key_connected); sys_net.trace("Received packet for connected STREAM-P2P socket(s=%d)", sock_id); @@ -946,7 +946,7 @@ struct nt_p2p_port return true; } - if(bound_p2p_streams.count(key_listening)) + if (bound_p2p_streams.contains(key_listening)) { const auto sock_id = bound_p2p_streams.at(key_listening); sys_net.trace("Received packet for listening STREAM-P2P socket(s=%d)", sock_id); @@ -1147,9 +1147,15 @@ s32 send_packet_from_p2p_port(const std::vector& data, const sockaddr_in& ad auto& nc = g_fxo->get(); { std::lock_guard list_lock(nc.list_p2p_ports_mutex); - auto& def_port = nc.list_p2p_ports.at(3658); - - res = ::sendto(def_port.p2p_socket, reinterpret_cast(data.data()), data.size(), 0, reinterpret_cast(&addr), sizeof(sockaddr_in)); + if (nc.list_p2p_ports.contains(3658)) + { + auto& def_port = nc.list_p2p_ports.at(3658); + res = ::sendto(def_port.p2p_socket, reinterpret_cast(data.data()), data.size(), 0, reinterpret_cast(&addr), sizeof(sockaddr_in)); + } + else + { + sys_net.error("send_packet_from_p2p_port: port %d not present", 3658); + } } return res; @@ -1161,11 +1167,18 @@ std::vector> get_rpcn_msgs() auto& nc = g_fxo->get(); { std::lock_guard list_lock(nc.list_p2p_ports_mutex); - auto& def_port = nc.list_p2p_ports.at(3658); + if (nc.list_p2p_ports.contains(3658)) { - std::lock_guard lock(def_port.s_rpcn_mutex); - msgs = std::move(def_port.rpcn_msgs); - def_port.rpcn_msgs.clear(); + auto& def_port = nc.list_p2p_ports.at(3658); + { + std::lock_guard lock(def_port.s_rpcn_mutex); + msgs = std::move(def_port.rpcn_msgs); + def_port.rpcn_msgs.clear(); + } + } + else + { + sys_net.error("get_rpcn_msgs: port %d not present", 3658); } } @@ -1178,11 +1191,18 @@ std::vector, std::vector>> get_sign_msgs() auto& nc = g_fxo->get(); { std::lock_guard list_lock(nc.list_p2p_ports_mutex); - auto& def_port = nc.list_p2p_ports.at(3658); + if (nc.list_p2p_ports.contains(3658)) { - std::lock_guard lock(def_port.s_sign_mutex); - msgs = std::move(def_port.sign_msgs); - def_port.sign_msgs.clear(); + auto& def_port = nc.list_p2p_ports.at(3658); + { + std::lock_guard lock(def_port.s_sign_mutex); + msgs = std::move(def_port.sign_msgs); + def_port.sign_msgs.clear(); + } + } + else + { + sys_net.error("get_sign_msgs: port %d not present", 3658); } } @@ -1489,7 +1509,7 @@ error_code sys_net_bnet_bind(ppu_thread& ppu, s32 s, vm::cptr auto& nc = g_fxo->get(); { std::lock_guard list_lock(nc.list_p2p_ports_mutex); - if (nc.list_p2p_ports.count(p2p_port) == 0) + if (!nc.list_p2p_ports.contains(p2p_port)) { nc.list_p2p_ports.emplace(std::piecewise_construct, std::forward_as_tuple(p2p_port), std::forward_as_tuple(p2p_port)); } @@ -1606,7 +1626,7 @@ error_code sys_net_bnet_connect(ppu_thread& ppu, s32 s, vm::ptrget(); { std::lock_guard list_lock(nc.list_p2p_ports_mutex); - if (!nc.list_p2p_ports.count(sock.p2p.port)) + if (!nc.list_p2p_ports.contains(sock.p2p.port)) nc.list_p2p_ports.emplace(std::piecewise_construct, std::forward_as_tuple(sock.p2p.port), std::forward_as_tuple(sock.p2p.port)); auto& pport = nc.list_p2p_ports.at(sock.p2p.port); @@ -3145,6 +3165,7 @@ error_code sys_net_bnet_close(ppu_thread& ppu, s32 s) auto& nc = g_fxo->get(); { std::lock_guard lock(nc.list_p2p_ports_mutex); + ensure(nc.list_p2p_ports.contains(sock->p2p.port)); auto& p2p_port = nc.list_p2p_ports.at(sock->p2p.port); { std::lock_guard lock(p2p_port.bound_p2p_vports_mutex); diff --git a/rpcs3/Emu/NP/signaling_handler.cpp b/rpcs3/Emu/NP/signaling_handler.cpp index d6e8279c0d..43aa384058 100644 --- a/rpcs3/Emu/NP/signaling_handler.cpp +++ b/rpcs3/Emu/NP/signaling_handler.cpp @@ -495,8 +495,8 @@ std::shared_ptr signaling_handler::get_signaling_ptr(const signa if (!npid_to_conn_id.count(npid)) return nullptr; - auto conn_id = npid_to_conn_id.at(npid); - if (!sig1_peers.count(conn_id)) + const u32 conn_id = npid_to_conn_id.at(npid); + if (!sig1_peers.contains(conn_id)) { sign_log.error("Discrepancy in signaling 1 data"); return nullptr; @@ -508,7 +508,7 @@ std::shared_ptr signaling_handler::get_signaling_ptr(const signa // V2 auto room_id = sp->V2.room_id; auto member_id = sp->V2.member_id; - if (!sig2_peers.count(room_id) || !sig2_peers.at(room_id).count(member_id)) + if (!sig2_peers.contains(room_id) || !sig2_peers.at(room_id).contains(member_id)) return nullptr; return sig2_peers.at(room_id).at(member_id); @@ -525,7 +525,8 @@ void signaling_handler::start_sig_nl(u32 conn_id, u32 addr, u16 port) auto& sent_packet = sig1_packet; sent_packet.command = signal_connect; - auto si = sig1_peers.at(conn_id); + ensure(sig1_peers.contains(conn_id)); + std::shared_ptr si = sig1_peers.at(conn_id); si->addr = addr; si->port = port; @@ -541,7 +542,11 @@ void signaling_handler::start_sig2(u64 room_id, u16 member_id) auto& sent_packet = sig2_packet; sent_packet.command = signal_connect; - auto si = sig2_peers.at(room_id).at(member_id); + ensure(sig2_peers.contains(room_id)); + const auto& sp = sig2_peers.at(room_id); + + ensure(sp.contains(member_id)); + std::shared_ptr si = sp.at(member_id); send_signaling_packet(sent_packet, si->addr, si->port); queue_signaling_packet(sent_packet, si, steady_clock::now() + REPEAT_CONNECT_DELAY); @@ -551,7 +556,7 @@ void signaling_handler::disconnect_sig2_users(u64 room_id) { std::lock_guard lock(data_mutex); - if (!sig2_peers.count(room_id)) + if (!sig2_peers.contains(room_id)) return; auto& sent_packet = sig2_packet; @@ -574,7 +579,7 @@ u32 signaling_handler::create_sig_infos(const SceNpId* npid) ensure(npid->handle.data[16] == 0); std::string npid_str(reinterpret_cast(npid->handle.data)); - if (npid_to_conn_id.count(npid_str)) + if (npid_to_conn_id.contains(npid_str)) { return npid_to_conn_id.at(npid_str); }