Software /
code /
prosody-modules
Diff
mod_presence_cache/mod_presence_cache.lua @ 2152:bb4a2e4b7ba7
mod_presence_cache: Forget about cached presence when receiving unavailable
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 03 Apr 2016 00:37:11 +0200 |
parent | 2147:ed2bb50d4f91 |
child | 2153:aa24d49c47ef |
line wrap: on
line diff
--- a/mod_presence_cache/mod_presence_cache.lua Sun Apr 03 00:21:16 2016 +0200 +++ b/mod_presence_cache/mod_presence_cache.lua Sun Apr 03 00:37:11 2016 +0200 @@ -22,6 +22,7 @@ end end +-- used indirectly for the on_evict callback local presence_cache = cache.new(cache_size, on_evict); local function cache_hook(event) @@ -41,8 +42,16 @@ local cache_key = username .. "\0" .. contact_full; local bare_cache_key = username .. "\0" .. contact_bare; + + local jids = bare_cache[bare_cache_key]; + + if typ == "unavailable" then -- remove from cache + presence_cache:set(cache_key, nil); + on_evict(cache_key); + return; + end + local stamp = datetime.datetime(); - local jids = bare_cache[bare_cache_key]; if jids then jids[contact_full] = stamp; else