From 5ca44f4ad9b9bdf7abed2c861b39d59cd0c05270 Mon Sep 17 00:00:00 2001 From: ANR2ME Date: Mon, 9 Oct 2023 22:24:05 +0700 Subject: [PATCH] Lets not delete the peer immediately, as handleTimeout function need the peer to be existed in order to trigger the TIMEOUT Event. --- Core/HLE/sceNetAdhoc.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Core/HLE/sceNetAdhoc.cpp b/Core/HLE/sceNetAdhoc.cpp index e9d8e73dd2..aa5271ab54 100644 --- a/Core/HLE/sceNetAdhoc.cpp +++ b/Core/HLE/sceNetAdhoc.cpp @@ -7230,7 +7230,8 @@ void actOnCancelPacket(SceNetAdhocMatchingContext * context, SceNetEtherAddr * s spawnLocalEvent(context, PSP_ADHOC_MATCHING_EVENT_DENY, sendermac, optlen, opt); // Delete Peer from List - deletePeer(context, peer); + //deletePeer(context, peer); + peer->lastping = 0; } // Kicked from Room @@ -7263,7 +7264,8 @@ void actOnCancelPacket(SceNetAdhocMatchingContext * context, SceNetEtherAddr * s spawnLocalEvent(context, PSP_ADHOC_MATCHING_EVENT_CANCEL, sendermac, optlen, opt); // Delete Peer from List - deletePeer(context, peer); + //deletePeer(context, peer); + peer->lastping = 0; } // Leave Room @@ -7273,7 +7275,8 @@ void actOnCancelPacket(SceNetAdhocMatchingContext * context, SceNetEtherAddr * s spawnLocalEvent(context, PSP_ADHOC_MATCHING_EVENT_LEAVE, sendermac, optlen, opt); // Delete Peer from List - deletePeer(context, peer); + //deletePeer(context, peer); + peer->lastping = 0; } } @@ -7289,8 +7292,9 @@ void actOnCancelPacket(SceNetAdhocMatchingContext * context, SceNetEtherAddr * s // Spawn Deny Event spawnLocalEvent(context, PSP_ADHOC_MATCHING_EVENT_DENY, sendermac, optlen, opt); - // Delete Peer from List - deletePeer(context, peer); + // FIXME: Delete Peer from List? + // Instead of removing the peer immediately, we should let it timedout, otherwise inviter in Crazy Taxi will wait forever without getting timedout, since handleTimeout need the peer data to exist. + peer->lastping = 0; } // Kicked from Room @@ -7300,7 +7304,8 @@ void actOnCancelPacket(SceNetAdhocMatchingContext * context, SceNetEtherAddr * s spawnLocalEvent(context, PSP_ADHOC_MATCHING_EVENT_LEAVE, sendermac, optlen, opt); // Delete Peer from List - deletePeer(context, peer); + //deletePeer(context, peer); + peer->lastping = 0; } // Cancel Join Request @@ -7310,7 +7315,8 @@ void actOnCancelPacket(SceNetAdhocMatchingContext * context, SceNetEtherAddr * s spawnLocalEvent(context, PSP_ADHOC_MATCHING_EVENT_CANCEL, sendermac, optlen, opt); // Delete Peer from List - deletePeer(context, peer); + //deletePeer(context, peer); + peer->lastping = 0; } } }