Sessions : les comptes au-dessus du niveau 0 ne sont plus coupes pour inactivite

Demande : « j aimerai que les comptes au-dessus du numero 0, c est a dire
les comptes GM/testeur/admin, ne soient pas soumis en jeu a la
deconnexion automatique en cas d absence prolongee ».

La coupure vient de WorldSession::Update :

    if (!IsBotSession() && IsConnectionIdle())
        m_Socket[CONNECTION_TYPE_REALM]->CloseSocket();

IsConnectionIdle() s appuie sur m_timeOutTime, initialise depuis
SocketTimeOutTime (900 000 ms, soit 15 minutes) et decremente a chaque
tick sans paquet entrant.

On ajoute GetSecurity() <= SEC_PLAYER a la condition. Les comptes de
niveau superieur restent connectes indefiniment ; les joueurs ordinaires
demeurent soumis au delai, la protection contre les sessions fantomes
gardant tout son interet pour eux.

Motif concret : ces comptes restent volontairement inactifs de longues
minutes pour observer une zone, suivre un evenement scripte ou attendre
le resultat d un test -- et se faisaient couper en plein travail, parfois
au milieu d une instance.

Portee actuelle : 5 comptes concernes (3 de niveau 1, 2 de niveau 4).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
SylvaniaCore deploy
2026-08-31 10:32:05 +02:00
parent 80a4a589f6
commit e1ccf30afc
+14 -1
View File
@@ -350,7 +350,20 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
///- Before we process anything:
/// If necessary, kick the player from the character select screen
if (!IsBotSession() && IsConnectionIdle())
//
// SylvaniaCore : les comptes de niveau superieur a SEC_PLAYER --
// maitres de jeu, testeurs, administration -- ne sont plus coupes
// pour inactivite.
//
// Motif : ces comptes restent volontairement connectes de longues
// minutes sans emettre de paquet, le temps d'observer une zone, de
// suivre un evenement scripte ou d'attendre le resultat d'un test.
// Le delai de SocketTimeOutTime (900 s) les deconnectait en plein
// travail, parfois au milieu d'une instance.
//
// Les joueurs ordinaires restent soumis au delai : la protection
// contre les sessions fantomes conserve tout son interet pour eux.
if (!IsBotSession() && GetSecurity() <= SEC_PLAYER && IsConnectionIdle())
m_Socket[CONNECTION_TYPE_REALM]->CloseSocket();
///- Retrieve packets from the receive queue and call the appropriate handlers