Mercurial > prosody-modules
annotate mod_cache_c2s_caps/mod_cache_c2s_caps.lua @ 5571:ca3c2d11823c
mod_pubsub_feeds: Track latest timestamp seen in feeds instead of last poll
This should ensure that an entry that has a publish timestmap after the
previously oldest post, but before the time of the last poll check, is
published to the node.
Previously if an entry would be skipped if it was published at 13:00
with a timestamp of 12:30, where the last poll was at 12:45.
For feeds that lack a timestamp, it now looks for the first post that is
not published, assuming that the feed is in reverse chronological order,
then iterates back up from there.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 25 Jun 2023 16:27:55 +0200 |
parents | 8fc16174fec6 |
children |
rev | line source |
---|---|
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
1 local st_iq = require "util.stanza".iq; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
2 local uuid_gen = require "util.uuid".generate; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
3 local calculate_hash = require "util.caps".calculate_hash; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
4 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
5 -- Map of jid..node, to avoid querying the same client multiple times for the same value. |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
6 local in_flight_iqs = {} |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
7 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
8 -- Some clients (*ahem* poezio…) don’t include the @node in their result iq. |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
9 local iq_node_map = {} |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
10 |
3464
13b394b0db82
mod_cache_c2s_caps: Fail to load if module:send_iq() is not available
Matthew Wild <mwild1@gmail.com>
parents:
3456
diff
changeset
|
11 assert(module.send_iq, "This module is not compatible with this version of Prosody."); |
13b394b0db82
mod_cache_c2s_caps: Fail to load if module:send_iq() is not available
Matthew Wild <mwild1@gmail.com>
parents:
3456
diff
changeset
|
12 |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
13 local function iq_result_handler(event) |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
14 local origin, stanza = event.origin, event.stanza; |
3111
7a3ac037e57f
mod_cache_c2s_caps: Fix traceback on invalid payload in disco#info result.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3080
diff
changeset
|
15 |
7a3ac037e57f
mod_cache_c2s_caps: Fix traceback on invalid payload in disco#info result.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3080
diff
changeset
|
16 local query = stanza:get_child("query", "http://jabber.org/protocol/disco#info"); |
7a3ac037e57f
mod_cache_c2s_caps: Fix traceback on invalid payload in disco#info result.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3080
diff
changeset
|
17 if not query then |
7a3ac037e57f
mod_cache_c2s_caps: Fix traceback on invalid payload in disco#info result.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3080
diff
changeset
|
18 origin.log("debug", "Wrong iq payload in disco#info result: %s", stanza); |
3456
b85622b577ad
mod_cache_c2s_caps: Unset the caps_cache also on errors due to the result validation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3455
diff
changeset
|
19 origin.caps_cache = nil; |
3111
7a3ac037e57f
mod_cache_c2s_caps: Fix traceback on invalid payload in disco#info result.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3080
diff
changeset
|
20 return; |
7a3ac037e57f
mod_cache_c2s_caps: Fix traceback on invalid payload in disco#info result.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3080
diff
changeset
|
21 end |
7a3ac037e57f
mod_cache_c2s_caps: Fix traceback on invalid payload in disco#info result.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3080
diff
changeset
|
22 |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
23 local from = stanza.attr.from; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
24 local id = stanza.attr.id; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
25 local node_string = query.attr.node; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
26 local node_query = iq_node_map[from..id]; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
27 if node_string == nil then |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
28 node_string = node_query; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
29 query.attr.node = node_query; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
30 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
31 iq_node_map[from..id] = nil; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
32 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
33 if node_string ~= node_query then |
3080
b003d72d9ce6
mod_cache_c2s_caps: Switch to origin.log to provide better debug to admins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
2901
diff
changeset
|
34 origin.log("debug", "Wrong node for our disco#info query, expected %s, received %s", node_string, node_query); |
3456
b85622b577ad
mod_cache_c2s_caps: Unset the caps_cache also on errors due to the result validation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3455
diff
changeset
|
35 origin.caps_cache = nil; |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
36 return; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
37 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
38 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
39 local node, ver = node_query:match("([^#]+)#([^#]+)"); |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
40 local hash = calculate_hash(query) |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
41 if ver ~= hash then |
3080
b003d72d9ce6
mod_cache_c2s_caps: Switch to origin.log to provide better debug to admins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
2901
diff
changeset
|
42 origin.log("debug", "Wrong hash for disco#info: %s ~= %s", ver, hash); |
3456
b85622b577ad
mod_cache_c2s_caps: Unset the caps_cache also on errors due to the result validation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3455
diff
changeset
|
43 origin.caps_cache = nil; |
3455
1ef702d30b6b
mod_cache_c2s_caps: Add a missing return when the hash is wrong.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3454
diff
changeset
|
44 return; |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
45 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
46 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
47 origin.caps_cache = query; |
3080
b003d72d9ce6
mod_cache_c2s_caps: Switch to origin.log to provide better debug to admins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
2901
diff
changeset
|
48 origin.log("info", "Stored caps %s", ver); |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
49 module:fire_event("c2s-capabilities-changed", { origin = origin }); |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
50 return true; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
51 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
52 |
3475
820c891a54cc
mod_cache_c2s_caps: Use the correct argument, and check for origin’s nil-ness
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3464
diff
changeset
|
53 local function iq_error_handler(err) |
820c891a54cc
mod_cache_c2s_caps: Use the correct argument, and check for origin’s nil-ness
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3464
diff
changeset
|
54 local origin = err.context.origin; |
820c891a54cc
mod_cache_c2s_caps: Use the correct argument, and check for origin’s nil-ness
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3464
diff
changeset
|
55 if origin ~= nil then |
820c891a54cc
mod_cache_c2s_caps: Use the correct argument, and check for origin’s nil-ness
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3464
diff
changeset
|
56 origin.caps_cache = nil; |
820c891a54cc
mod_cache_c2s_caps: Use the correct argument, and check for origin’s nil-ness
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3464
diff
changeset
|
57 module:fire_event("c2s-capabilities-changed", { origin = origin }); |
820c891a54cc
mod_cache_c2s_caps: Use the correct argument, and check for origin’s nil-ness
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3464
diff
changeset
|
58 end |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
59 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
60 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
61 local function presence_stanza_handler(event) |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
62 local origin, stanza = event.origin, event.stanza; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
63 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
64 local from = stanza.attr.from; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
65 if stanza.attr.to ~= nil then |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
66 return; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
67 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
68 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
69 local caps = stanza:get_child("c", "http://jabber.org/protocol/caps"); |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
70 if caps == nil then |
4320
8fc16174fec6
mod_cache_c2s_caps: log full JID on all relevant code paths
Georg Lukas <georg@op-co.de>
parents:
4018
diff
changeset
|
71 origin.log("debug", "Presence from %s without caps received, skipping", from); |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
72 return; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
73 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
74 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
75 local hash = caps.attr.hash; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
76 local node = caps.attr.node; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
77 local ver = caps.attr.ver; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
78 if not hash or not node or not ver then |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
79 return; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
80 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
81 if hash ~= "sha-1" then |
4320
8fc16174fec6
mod_cache_c2s_caps: log full JID on all relevant code paths
Georg Lukas <georg@op-co.de>
parents:
4018
diff
changeset
|
82 origin.log("warn", "Presence from %s with non-SHA-1 caps : %s", from, hash); |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
83 return; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
84 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
85 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
86 local node_query = node.."#"..ver; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
87 if (origin.caps_cache and origin.caps_cache.attr.node == node_query) or in_flight_iqs[from..node_query] ~= nil then |
3080
b003d72d9ce6
mod_cache_c2s_caps: Switch to origin.log to provide better debug to admins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
2901
diff
changeset
|
88 origin.log("debug", "Already requested these caps, skipping"); |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
89 return; |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
90 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
91 |
4320
8fc16174fec6
mod_cache_c2s_caps: log full JID on all relevant code paths
Georg Lukas <georg@op-co.de>
parents:
4018
diff
changeset
|
92 origin.log("debug", "Presence from %s with SHA-1 caps %s, querying disco#info", from, node_query); |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
93 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
94 local id = uuid_gen(); |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
95 iq_node_map[from..id] = node_query |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
96 local iq = st_iq({ type = "get", from = module.host, to = from, id = id }) |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
97 :tag("query", { xmlns = "http://jabber.org/protocol/disco#info", node = node_query }); |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
98 in_flight_iqs[from..node_query] = true; |
3454
c424bfb927b1
mod_cache_c2s_caps: Switch to the new module:send_iq() API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3111
diff
changeset
|
99 module:send_iq(iq, origin) |
c424bfb927b1
mod_cache_c2s_caps: Switch to the new module:send_iq() API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3111
diff
changeset
|
100 :next(iq_result_handler, iq_error_handler) |
c424bfb927b1
mod_cache_c2s_caps: Switch to the new module:send_iq() API.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3111
diff
changeset
|
101 :finally(function () in_flight_iqs[from..node_query] = nil; end) |
2899
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
102 end |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
103 |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
104 -- Handle only non-directed presences for now. |
0273d7583373
mod_cache_c2s_caps: New module caching capabilities from local clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
105 module:hook("pre-presence/bare", presence_stanza_handler); |