From 100b4605ecbac660373587342b8880c100a436d7 Mon Sep 17 00:00:00 2001 From: dongresource Date: Sun, 11 Dec 2022 18:35:22 +0100 Subject: [PATCH] Fix early CNShared timeout Revisiting this again; the issue was that the comparison operator was facing the wrong way, so connections were being pruned every 30 seconds or less. This was effectively a race condition kicking an unlucky player every so often when pruning happened exactly during an attempt to enter the game. Now that the proper timeout is being enforced, I've reduced it to 5 minutes, down from 15, since it really doesn't need to be that long. --- src/core/CNShared.cpp | 2 +- src/core/CNShared.hpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/CNShared.cpp b/src/core/CNShared.cpp index d9d4e14..98c2f18 100644 --- a/src/core/CNShared.cpp +++ b/src/core/CNShared.cpp @@ -32,7 +32,7 @@ void CNShared::pruneLoginMetadata(CNServer *serv, time_t currTime) { auto& sk = it->first; auto& lm = it->second; - if (lm->timestamp + CNSHARED_TIMEOUT > currTime) { + if (currTime > lm->timestamp + CNSHARED_TIMEOUT) { std::cout << "[WARN] Pruning hung connection attempt" << std::endl; // deallocate object and remove map entry diff --git a/src/core/CNShared.hpp b/src/core/CNShared.hpp index 98fc495..8fa291c 100644 --- a/src/core/CNShared.hpp +++ b/src/core/CNShared.hpp @@ -11,9 +11,9 @@ #include "Player.hpp" /* - * Connecions time out after 15 minutes, checked every 30 seconds. + * Connecions time out after 5 minutes, checked every 30 seconds. */ -#define CNSHARED_TIMEOUT 900000 +#define CNSHARED_TIMEOUT 300000 #define CNSHARED_PERIOD 30000 struct LoginMetadata {