diff options
author | Kim Alvefur <zash@zash.se> | 2024-11-19 00:53:01 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2024-11-19 00:53:01 +0100 |
commit | fff5a91e376d1cd7eddb7be6d18920fa2efaaa4d (patch) | |
tree | f22cd837c00f17bccff08299394db9cd66cbff23 | |
parent | 61b0c0cd3ad805281ea5021278ecd6372296c9c5 (diff) | |
download | prosody-fff5a91e376d1cd7eddb7be6d18920fa2efaaa4d.tar.gz prosody-fff5a91e376d1cd7eddb7be6d18920fa2efaaa4d.zip |
mod_smacks: Prevent traceback on attempting to resume destroyed session
This shouldn't be possible, but seems to happen anyway after net.server
somehow calling the close handler twice, which also should not happen.
-rw-r--r-- | plugins/mod_smacks.lua | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/plugins/mod_smacks.lua b/plugins/mod_smacks.lua index 7a9a67b3..62cf9dd1 100644 --- a/plugins/mod_smacks.lua +++ b/plugins/mod_smacks.lua @@ -587,6 +587,11 @@ function do_resume(session, stanza) local id = stanza.attr.previd; local original_session = session_registry[registry_key(session, id)]; + if original_session.destroyed then + original_session.log("error", "Tried to resume a destroyed session. This should not happen! %s", debug.traceback()); + session_registry[registry_key(session, id)] = nil; + original_session = nil; + end if not original_session then local old_session = old_session_registry:get(session.username, id); if old_session then |