Mercurial > prosody-modules
changeset 766:1184fe8ebb21
mod_pubsub_hub: Try to choose time until the next periodic check in a sane way
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 02 Aug 2012 00:25:24 +0200 (2012-08-01) |
parents | 82d292e4f30f |
children | e5667f1da6bf |
files | mod_pubsub_hub/mod_pubsub_hub.lua |
diffstat | 1 files changed, 7 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_pubsub_hub/mod_pubsub_hub.lua Wed Aug 01 17:14:03 2012 +0200 +++ b/mod_pubsub_hub/mod_pubsub_hub.lua Thu Aug 02 00:25:24 2012 +0200 @@ -144,15 +144,14 @@ local function periodic() local now = time(); local next_check = now + max_lease; - local purge = false + local purge = false; for topic, callbacks in pairs(subs_by_topic) do for callback, subscription in pairs(callbacks) do if subscription.mode == "subscribed" then if subscription.expires < now then -- Subscription has expired, drop it. - purge = true - end - if subscription.expires < now + min_lease then + purge = true; + elseif subscription.expires < now + min_lease then -- Subscription set to expire soon, re-confirm it. local challenge = uuid(); local callback_url = callback .. (callback:match("%?") and "&" or "?") .. formencode{ @@ -168,7 +167,7 @@ end end); else - next_check = m_min(next_check, now - subscription.expires) + next_check = m_min(next_check, subscription.expires); end end end @@ -180,10 +179,11 @@ new_callbacks[callback] = subscription; end end - subs_by_topic[topic] = new_callbacks + subs_by_topic[topic] = new_callbacks; + purge = false; end end - return m_max(next_check - min_lease, min_lease); + return now - m_max(next_check - min_lease, min_lease); end local function on_notify(subscription, content)