aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/World
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2017-06-27 00:22:33 +0200
committerCarbenium <carbenium@outlook.com>2020-07-16 22:00:30 +0200
commit2c3fc47a96baa8a47130befda647bf29d8eacce1 (patch)
treed2b003d52361193409965d7e914eceed6071efd0 /src/server/game/World
parent37c3259de8a53f6e790707f4f105dda7a297c28d (diff)
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)
Diffstat (limited to 'src/server/game/World')
-rw-r--r--src/server/game/World/World.cpp3
-rw-r--r--src/server/game/World/World.h1
2 files changed, 3 insertions, 1 deletions
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