diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index f209dc334..7fb45d33d 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -254,7 +254,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) /// If necessary, kick the player because the client didn't send anything for too long /// (or they've been idling in character select) - if (IsConnectionIdle()) + if (sWorld->getBoolConfig(CONFIG_CLOSE_IDLE_CONNECTIONS) && IsConnectionIdle()) m_Socket->CloseSocket(); } diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 768616e40..27797c0a2 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -689,6 +689,7 @@ void World::LoadConfigSettings(bool reload) else m_int_configs[CONFIG_PORT_WORLD] = sConfigMgr->GetIntDefault("WorldServerPort", 8085); + m_bool_configs[CONFIG_CLOSE_IDLE_CONNECTIONS] = sConfigMgr->GetBoolDefault("CloseIdleConnections", true); 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); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index a6d37e25f..7e4843d98 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -166,6 +166,7 @@ enum WorldBoolConfigs CONFIG_CALCULATE_CREATURE_ZONE_AREA_DATA, CONFIG_CALCULATE_GAMEOBJECT_ZONE_AREA_DATA, CONFIG_CHECK_GOBJECT_LOS, + CONFIG_CLOSE_IDLE_CONNECTIONS, BOOL_CONFIG_VALUE_COUNT }; diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 81815f97f..35ecb8494 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -212,6 +212,15 @@ MaxOverspeedPings = 2 GridUnload = 1 +# +# CloseIdleConnections +# Description: Automatically close idle connections. +# SocketTimeOutTime and SocketTimeOutTimeActive determine when a connection is considered as idle. +# Default: 1 - (enable, Automatically close idle connections) +# 0 - (disable, Do not close idle connections) + +CloseIdleConnections = 1 + # # SocketTimeOutTime # Description: Time (in milliseconds) after which a connection being idle on the character