diff options
| author | 2019-07-21 13:44:32 +0100 | |
|---|---|---|
| committer | 2019-07-21 13:50:01 +0100 | |
| commit | 850b7a3ace862101a944a9332d72b6bd597c17cc (patch) | |
| tree | a5b5e204de40f29942795cdffaec18037ccf16f1 /src/usermanager.cpp | |
| parent | Add an event for adding tags to S2S messages. (diff) | |
Allow modules to prevent a failed connection from being closed.
Diffstat (limited to 'src/usermanager.cpp')
| -rw-r--r-- | src/usermanager.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 6acd25ac5..4f65994aa 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -58,6 +58,16 @@ namespace // This user didn't answer the last ping, remove them. if (!user->lastping) { + ModResult res; + FIRST_MOD_RESULT(OnConnectionFail, res, (user, I_ERR_TIMEOUT)); + if (res == MOD_RES_ALLOW) + { + // A module is preventing this user from being timed out. + user->lastping = 1; + user->nextping = ServerInstance->Time() + user->MyClass->GetPingTime(); + return; + } + time_t secs = ServerInstance->Time() - (user->nextping - user->MyClass->GetPingTime()); const std::string message = "Ping timeout: " + ConvToStr(secs) + (secs != 1 ? " seconds" : " second"); ServerInstance->Users.QuitUser(user, message); |
