diff --git a/rpcs3/Emu/NP/signaling_handler.cpp b/rpcs3/Emu/NP/signaling_handler.cpp index a29b139628..922ca024c9 100644 --- a/rpcs3/Emu/NP/signaling_handler.cpp +++ b/rpcs3/Emu/NP/signaling_handler.cpp @@ -610,11 +610,15 @@ void signaling_handler::stop_sig_nl(u32 conn_id) if (!sig_peers.contains(conn_id)) return; + std::shared_ptr si = ::at32(sig_peers, conn_id); + + // Do not queue packets for an already dead connection + if (si->conn_status == SCE_NP_SIGNALING_CONN_STATUS_INACTIVE) + return; + auto& sent_packet = sig_packet; sent_packet.command = signal_finished; - std::shared_ptr si = ::at32(sig_peers, conn_id); - send_signaling_packet(sent_packet, si->addr, si->port); queue_signaling_packet(sent_packet, std::move(si), steady_clock::now() + REPEAT_FINISHED_DELAY); }