annotate mod_presence_cache/mod_presence_cache.lua @ 5193:2bb29ece216b

mod_http_oauth2: Implement stateless dynamic client registration Replaces previous explicit registration that required either the additional module mod_adhoc_oauth2_client or manually editing the database. That method was enough to have something to test with, but would not probably not scale easily. Dynamic client registration allows creating clients on the fly, which may be even easier in theory. In order to not allow basically unauthenticated writes to the database, we implement a stateless model here. per_host_key := HMAC(config -> oauth2_registration_key, hostname) client_id := JWT { client metadata } signed with per_host_key client_secret := HMAC(per_host_key, client_id) This should ensure everything we need to know is part of the client_id, allowing redirects etc to be validated, and the client_secret can be validated with only the client_id and the per_host_key. A nonce injected into the client_id JWT should ensure nobody can submit the same client metadata and retrieve the same client_secret
author Kim Alvefur <zash@zash.se>
date Fri, 03 Mar 2023 21:14:19 +0100
parents 830a01443a2f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2176
b76b062e77db mod_presence_cache: Add copyright header
Kim Alvefur <zash@zash.se>
parents: 2175
diff changeset
1 -- XEP-0280: Message Carbons implementation for Prosody
b76b062e77db mod_presence_cache: Add copyright header
Kim Alvefur <zash@zash.se>
parents: 2175
diff changeset
2 -- Copyright (C) 2015-2016 Kim Alvefur
b76b062e77db mod_presence_cache: Add copyright header
Kim Alvefur <zash@zash.se>
parents: 2175
diff changeset
3 --
b76b062e77db mod_presence_cache: Add copyright header
Kim Alvefur <zash@zash.se>
parents: 2175
diff changeset
4 -- This file is MIT/X11 licensed.
b76b062e77db mod_presence_cache: Add copyright header
Kim Alvefur <zash@zash.se>
parents: 2175
diff changeset
5
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local is_contact_subscribed = require"core.rostermanager".is_contact_subscribed;
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local jid_split = require"util.jid".split;
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 local jid_bare = require"util.jid".bare;
3183
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
9 local jid_host = require"util.jid".host;
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local st = require"util.stanza";
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local datetime = require"util.datetime";
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
12 local cache = require "util.cache";
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
14 local cache_size = module:get_option_number("presence_cache_size", 100);
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
15
2175
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
16 local bare_cache = {}; -- [username NUL bare_jid] = { [full_jid] = { timestamp, ... } }
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
17
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
18 local function on_evict(cache_key)
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
19 local bare_cache_key = cache_key:match("^%Z+%z[^/]+");
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
20 local full_jid = cache_key:match("%z(.*)$");
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
21 local jids = bare_cache[bare_cache_key];
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
22
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
23 if jids then
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
24 jids[full_jid] = nil;
2153
aa24d49c47ef mod_presence_cache: Only check set set is empty if it exists
Kim Alvefur <zash@zash.se>
parents: 2152
diff changeset
25 if next(jids) == nil then
aa24d49c47ef mod_presence_cache: Only check set set is empty if it exists
Kim Alvefur <zash@zash.se>
parents: 2152
diff changeset
26 bare_cache[bare_cache_key] = nil;
aa24d49c47ef mod_presence_cache: Only check set set is empty if it exists
Kim Alvefur <zash@zash.se>
parents: 2152
diff changeset
27 end
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
28 end
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
29 end
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
30
2152
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
31 -- used indirectly for the on_evict callback
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
32 local presence_cache = cache.new(cache_size, on_evict);
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 local function cache_hook(event)
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 local origin, stanza = event.origin, event.stanza;
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 local typ = stanza.attr.type;
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 module:log("debug", "Cache hook, got %s from a %s", stanza:top_tag(), origin.type);
2145
f965f86a5cad mod_presence_cache: Check stanzas only from s2sin (not needed, even with mod_bidi)
Kim Alvefur <zash@zash.se>
parents: 2123
diff changeset
38 if origin.type == "s2sin" and ( typ == nil or typ == "unavailable" ) then
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
40 local contact_full = stanza.attr.from;
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
41 local contact_bare = jid_bare(contact_full);
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
42 local username, host = jid_split(stanza.attr.to);
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
43
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
44 if not is_contact_subscribed(username, host, contact_bare) then
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
45 module:log("debug", "Presence from jid not in roster");
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 return;
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 end
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
49 local cache_key = username .. "\0" .. contact_full;
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
50 local bare_cache_key = username .. "\0" .. contact_bare;
2152
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
51
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
52 local jids = bare_cache[bare_cache_key];
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
53
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
54 if typ == "unavailable" then -- remove from cache
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
55 presence_cache:set(cache_key, nil);
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
56 on_evict(cache_key);
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
57 return;
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
58 end
bb4a2e4b7ba7 mod_presence_cache: Forget about cached presence when receiving unavailable
Kim Alvefur <zash@zash.se>
parents: 2147
diff changeset
59
2175
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
60 local presence_bits = {
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
61 stamp = datetime.datetime();
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
62 show = stanza:get_child_text("show");
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
63 };
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
64 if jids then
2175
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
65 jids[contact_full] = presence_bits;
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
66 else
2175
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
67 jids = { [contact_full] = presence_bits };
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
68 bare_cache[bare_cache_key] = jids;
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
69 end
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
70 presence_cache:set(cache_key, true);
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
71 end
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
72 end
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
73
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
74 module:hook("presence/bare", cache_hook, 10);
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
75 -- module:hook("presence/full", cache_hook, 10);
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
76
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
77 local function answer_probe_from_cache(event)
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
78 local origin, stanza = event.origin, event.stanza;
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
79 if stanza.attr.type ~= "probe" then return; end
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
80
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
81 local username = origin.username;
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
82 local contact_bare = stanza.attr.to;
2292
54f44365a378 mod_presence_cache: Ignore stanzas to self (fixes traceback on probe to self)
Kim Alvefur <zash@zash.se>
parents: 2176
diff changeset
83 if not contact_bare then return; end -- probe to self
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
84
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
85 local bare_cache_key = username .. "\0" .. contact_bare;
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
86
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
87 local cached = bare_cache[bare_cache_key];
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
88 if not cached then return end
3373
322e8e7ba7d4 mod_presence_cache: Set delay source to bare JID instead of host
Kim Alvefur <zash@zash.se>
parents: 3183
diff changeset
89 local user_bare = jid_bare(origin.full_jid);
2175
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
90 for jid, presence_bits in pairs(cached) do
2147
ed2bb50d4f91 mod_presence_cache: Switch to using util.cache for limiting size of cache
Kim Alvefur <zash@zash.se>
parents: 2146
diff changeset
91 local presence = st.presence({ to = origin.full_jid, from = jid })
2175
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
92 if presence_bits.show then
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
93 presence:tag("show"):text(presence_bits.show):up();
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
94 end
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
95 if presence_bits.stamp then
3373
322e8e7ba7d4 mod_presence_cache: Set delay source to bare JID instead of host
Kim Alvefur <zash@zash.se>
parents: 3183
diff changeset
96 presence:tag("delay", { xmlns = "urn:xmpp:delay", from = user_bare, stamp = presence_bits.stamp }):up();
2175
cc0cf6748885 mod_presence_cache: Also cache the 'show' value
Kim Alvefur <zash@zash.se>
parents: 2153
diff changeset
97 end
1952
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
98 origin.send(presence);
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
99 end
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
100 end
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
101
9d0c33ebbcc5 mod_presence_cache: Cache incoming presence broadcasts in order to get clients up to speed with who is online faster
Kim Alvefur <zash@zash.se>
parents:
diff changeset
102 module:hook("pre-presence/bare", answer_probe_from_cache, 10);
3183
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
103
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
104 local function clear_cache_from_s2s(remote, reason)
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
105 if not remote then return end
3760
830a01443a2f mod_presence_cache: Fix traceback due to changes in trunk
Kim Alvefur <zash@zash.se>
parents: 3373
diff changeset
106 -- FIXME Ignore if connection closed for being idle
3183
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
107
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
108 module:log("debug", "Dropping cached presence from host %s", remote);
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
109
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
110 for bare, cached in pairs(bare_cache) do
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
111 if jid_host(bare) == remote then
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
112 for jid in pairs(cached) do
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
113 presence_cache:set(jid, nil);
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
114 end
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
115 bare_cache[bare] = nil;
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
116 end
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
117 end
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
118 end
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
119
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
120 module:hook("s2sin-destroyed", function (event)
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
121 return clear_cache_from_s2s(event.session.from_host, event.reason);
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
122 end);
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
123
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
124 module:hook("s2sout-destroyed", function (event)
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
125 return clear_cache_from_s2s(event.session.to_host, event.reason);
b718092e442f mod_presence_cache: Forget cached presence on s2s close
Kim Alvefur <zash@zash.se>
parents: 2292
diff changeset
126 end);