Software /
code /
prosody-modules
Comparison
mod_cloud_notify/mod_cloud_notify.lua @ 4355:31afa4f314cc
mod_cloud_notify: Fix handling of push_queue
smacks-hibernating while the push_queue had a timer running resulted
in push not working for this session anymore.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Sun, 17 Jan 2021 21:52:36 +0100 |
parent | 4332:7a5ca4b285cb |
child | 4367:33f82988d7a9 |
comparison
equal
deleted
inserted
replaced
4354:d61d7d30f38d | 4355:31afa4f314cc |
---|---|
436 if session.push_identifier then | 436 if session.push_identifier then |
437 session.log("debug", "adding new stanza to push_queue"); | 437 session.log("debug", "adding new stanza to push_queue"); |
438 if not session.push_queue then session.push_queue = {}; end | 438 if not session.push_queue then session.push_queue = {}; end |
439 local queue = session.push_queue; | 439 local queue = session.push_queue; |
440 queue[#queue+1] = st.clone(stanza); | 440 queue[#queue+1] = st.clone(stanza); |
441 if #queue == 1 then -- first stanza --> start timer | 441 if not session.awaiting_push_timer then -- timer not already running --> start new timer |
442 session.log("debug", "Invoking cloud handle_notify_request() for newly smacks queued stanza (in a moment)"); | 442 session.log("debug", "Invoking cloud handle_notify_request() for newly smacks queued stanza (in a moment)"); |
443 session.awaiting_push_timer = module:add_timer(1.0, function () | 443 session.awaiting_push_timer = module:add_timer(1.0, function () |
444 session.log("debug", "Invoking cloud handle_notify_request() for newly smacks queued stanzas (now in timer)"); | 444 session.log("debug", "Invoking cloud handle_notify_request() for newly smacks queued stanzas (now in timer)"); |
445 process_stanza_queue(session.push_queue, session, "push"); | 445 process_stanza_queue(session.push_queue, session, "push"); |
446 session.push_queue = {}; -- clean up queue after push | 446 session.push_queue = {}; -- clean up queue after push |