aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2009-10-02 21:24:16 +0100
committerMatthew Wild <mwild1@gmail.com>2009-10-02 21:24:16 +0100
commitf816a78cb14388155935520d7c459deecc0e9ec4 (patch)
treea23c515ac78b34210ad704570c27b31317ec90d7 /plugins
parent993f73525583958fc68e23aba9255b2d2efaea4c (diff)
parent26b86f46a9ccec536984e9d5b5e73dfad7d88cae (diff)
downloadprosody-f816a78cb14388155935520d7c459deecc0e9ec4.tar.gz
prosody-f816a78cb14388155935520d7c459deecc0e9ec4.zip
Merge with 0.5
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mod_bosh.lua11
1 files changed, 10 insertions, 1 deletions
diff --git a/plugins/mod_bosh.lua b/plugins/mod_bosh.lua
index e310be28..0dd4a192 100644
--- a/plugins/mod_bosh.lua
+++ b/plugins/mod_bosh.lua
@@ -258,6 +258,7 @@ function stream_callbacks.handlestanza(request, stanza)
end
end
+local dead_sessions = {};
function on_timer()
-- log("debug", "Checking for requests soon to timeout...");
-- Identify requests timing out within the next few seconds
@@ -274,18 +275,26 @@ function on_timer()
end
now = now - 3;
+ local n_dead_sessions = 0;
for session, inactive_since in pairs(inactive_sessions) do
if session.bosh_max_inactive then
if now - inactive_since > session.bosh_max_inactive then
(session.log or log)("debug", "BOSH client inactive too long, destroying session at %d", now);
sessions[session.sid] = nil;
inactive_sessions[session] = nil;
- sm_destroy_session(session, "BOSH client silent for over "..session.bosh_max_inactive.." seconds");
+ n_dead_sessions = n_dead_sessions + 1;
+ dead_sessions[n_dead_sessions] = session;
end
else
inactive_sessions[session] = nil;
end
end
+
+ for i=1,n_dead_sessions do
+ local session = dead_sessions[i];
+ dead_sessions[i] = nil;
+ sm_destroy_session(session, "BOSH client silent for over "..session.bosh_max_inactive.." seconds");
+ end
end
local ports = module:get_option("bosh_ports") or { 5280 };