Software /
code /
prosody
Comparison
plugins/mod_bosh.lua @ 1865:388b125b784a
Merge with 0.5
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 02 Oct 2009 21:24:16 +0100 |
parent | 1665:2c72b725384e |
parent | 1864:b9389286eece |
child | 1869:7456bb2a3458 |
comparison
equal
deleted
inserted
replaced
1862:115f274dd17f | 1865:388b125b784a |
---|---|
256 end | 256 end |
257 core_process_stanza(session, stanza); | 257 core_process_stanza(session, stanza); |
258 end | 258 end |
259 end | 259 end |
260 | 260 |
261 local dead_sessions = {}; | |
261 function on_timer() | 262 function on_timer() |
262 -- log("debug", "Checking for requests soon to timeout..."); | 263 -- log("debug", "Checking for requests soon to timeout..."); |
263 -- Identify requests timing out within the next few seconds | 264 -- Identify requests timing out within the next few seconds |
264 local now = os_time() + 3; | 265 local now = os_time() + 3; |
265 for request in pairs(waiting_requests) do | 266 for request in pairs(waiting_requests) do |
272 end | 273 end |
273 end | 274 end |
274 end | 275 end |
275 | 276 |
276 now = now - 3; | 277 now = now - 3; |
278 local n_dead_sessions = 0; | |
277 for session, inactive_since in pairs(inactive_sessions) do | 279 for session, inactive_since in pairs(inactive_sessions) do |
278 if session.bosh_max_inactive then | 280 if session.bosh_max_inactive then |
279 if now - inactive_since > session.bosh_max_inactive then | 281 if now - inactive_since > session.bosh_max_inactive then |
280 (session.log or log)("debug", "BOSH client inactive too long, destroying session at %d", now); | 282 (session.log or log)("debug", "BOSH client inactive too long, destroying session at %d", now); |
281 sessions[session.sid] = nil; | 283 sessions[session.sid] = nil; |
282 inactive_sessions[session] = nil; | 284 inactive_sessions[session] = nil; |
283 sm_destroy_session(session, "BOSH client silent for over "..session.bosh_max_inactive.." seconds"); | 285 n_dead_sessions = n_dead_sessions + 1; |
286 dead_sessions[n_dead_sessions] = session; | |
284 end | 287 end |
285 else | 288 else |
286 inactive_sessions[session] = nil; | 289 inactive_sessions[session] = nil; |
287 end | 290 end |
288 end | 291 end |
292 | |
293 for i=1,n_dead_sessions do | |
294 local session = dead_sessions[i]; | |
295 dead_sessions[i] = nil; | |
296 sm_destroy_session(session, "BOSH client silent for over "..session.bosh_max_inactive.." seconds"); | |
297 end | |
289 end | 298 end |
290 | 299 |
291 local ports = module:get_option("bosh_ports") or { 5280 }; | 300 local ports = module:get_option("bosh_ports") or { 5280 }; |
292 httpserver.new_from_config(ports, "http-bind", handle_request); | 301 httpserver.new_from_config(ports, "http-bind", handle_request); |
293 | 302 |