Software /
code /
prosody
Changeset
13576:5d8fc1c4eb7c
mod_smacks: Run session destruction code in session's async context
This is the Right Thing and should fix various potential issues and race
conditions.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 21 Nov 2024 17:02:55 +0000 |
parents | 13575:750ff9f579e2 |
children | 13577:a45b209302c1 |
files | plugins/mod_smacks.lua |
diffstat | 1 files changed, 11 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_smacks.lua Thu Nov 21 17:02:07 2024 +0000 +++ b/plugins/mod_smacks.lua Thu Nov 21 17:02:55 2024 +0000 @@ -541,13 +541,17 @@ return end - prosody.main_thread:run(function () - session.log("debug", "Destroying session for hibernating too long"); - save_old_session(session); - session.resumption_token = nil; - sessionmanager.destroy_session(session, "Hibernating too long"); - sessions_expired(1); - end); + session.thread:run({ + event = "callback"; + name = "mod_smacks/destroy_hibernating"; + callback = function () + session.log("debug", "Destroying session for hibernating too long"); + save_old_session(session); + session.resumption_token = nil; + sessionmanager.destroy_session(session, "Hibernating too long"); + sessions_expired(1); + end; + }); end); if session.conn then local conn = session.conn;