From 2c3fc47a96baa8a47130befda647bf29d8eacce1 Mon Sep 17 00:00:00 2001 From: Treeston Date: Tue, 27 Jun 2017 00:22:33 +0200 Subject: Proper client timeout detection (#19906) - Properly detect client timeout when logged into a character after a configurable time (default 60s) has passed without the client sending any packets. - Fixes issues with crashed clients leaving characters in the world for a very long time (default 15 minutes), as well as edge case exploits involving intentionally pausing client execution for some amount of time. (cherry picked from commit 7dfd472f8dff6ce067572e2887c2beb56d9ba9de) --- src/server/game/World/World.cpp | 3 ++- src/server/game/World/World.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src/server/game/World') diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 828db2cd210..8d5f8ca66ac 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -410,7 +410,7 @@ bool World::RemoveQueuedPlayer(WorldSession* sess) if (*iter == sess) { sess->SetInQueue(false); - sess->ResetTimeOutTime(); + sess->ResetTimeOutTime(false); iter = m_QueuedPlayer.erase(iter); found = true; // removing queued session break; @@ -753,6 +753,7 @@ void World::LoadConfigSettings(bool reload) } m_int_configs[CONFIG_SOCKET_TIMEOUTTIME] = sConfigMgr->GetIntDefault("SocketTimeOutTime", 900000); + m_int_configs[CONFIG_SOCKET_TIMEOUTTIME_ACTIVE] = sConfigMgr->GetIntDefault("SocketTimeOutTimeActive", 60000); m_int_configs[CONFIG_SESSION_ADD_DELAY] = sConfigMgr->GetIntDefault("SessionAddDelay", 10000); m_float_configs[CONFIG_GROUP_XP_DISTANCE] = sConfigMgr->GetFloatDefault("MaxGroupXPDistance", 74.0f); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 86cc55cc057..ee3158dc119 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -414,6 +414,7 @@ enum WorldIntConfigs CONFIG_RESPAWN_DYNAMICMINIMUM_CREATURE, CONFIG_RESPAWN_DYNAMICMINIMUM_GAMEOBJECT, CONFIG_RESPAWN_GUIDWARNING_FREQUENCY, + CONFIG_SOCKET_TIMEOUTTIME_ACTIVE, CONFIG_BLACKMARKET_MAXAUCTIONS, CONFIG_BLACKMARKET_UPDATE_PERIOD, INT_CONFIG_VALUE_COUNT -- cgit v1.2.3