sceNetAdhocMatching: A denied P2P request goes back to a known peer

CancelTarget on an incoming P2P request marked the peer timed out. It
only escaped a TIMEOUT if one of its hellos came in before the next
timeout check, which it no longer does now that timeouts are checked
all the time. On a PSP it's a peer known from its hellos again, with no
TIMEOUT (pspautotests net/adhoc/pair/matching3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-10-30 10:15:14 +01:00
1 parent 08c76b8b25
commit 882eee4c13
1 file changed
+10
+10
View File
@@ -2188,6 +2188,16 @@ int NetAdhocMatching_CancelTargetWithOpt(int matchingId, const char* macAddress,
{
const bool notifyDeath = context->mode == PSP_ADHOC_MATCHING_MODE_PARENT && peer->state == PSP_ADHOC_MATCHING_PEER_CHILD && countConnectedPeers(context) > 1;
// A P2P peer whose request is denied goes back to one known from its hellos: no TIMEOUT, and it
// can ask again (pspautotests net/adhoc/pair/matching3).
if (context->mode == PSP_ADHOC_MATCHING_MODE_P2P && peer->state == PSP_ADHOC_MATCHING_PEER_INCOMING_REQUEST) {
sendCancelMessage(context, peer, optLen, opt);
peer->state = PSP_ADHOC_MATCHING_PEER_OFFER;
peer->lastping = CoreTiming::GetGlobalTimeUsScaled();
hleEatCycles(adhocDefaultDelay);
return hleLogDebug(Log::sceNet, 0);
}
// Mark Peer as Canceled
peer->state = PSP_ADHOC_MATCHING_PEER_CANCEL_IN_PROGRESS;