annotate mod_csi/mod_csi.lua @ 4738:5aee8d86629a

mod_bookmarks2: Fix handling of nick and password elements This form of child retrieval fails when the stanza elements internally don't have an 'xmlns' attribute, which can happen sometimes for some reason, including when they have been constructed via the stanza builder API. When that is the case then the explicit namespace arguemnt does not match the nil value of the internal attribute. Calling `:get_child()` without the namespace argument does the right thing here, with both nil and the parent namespace as valid values for the internal attribute.
author Kim Alvefur <zash@zash.se>
date Wed, 03 Nov 2021 21:11:55 +0100
parents eaf0b1e95016
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1483
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local st = require "util.stanza";
1590
fbb4cd2922a1 mod_csi: Update namespace to published version
Kim Alvefur <zash@zash.se>
parents: 1483
diff changeset
2 local xmlns_csi = "urn:xmpp:csi:0";
fbb4cd2922a1 mod_csi: Update namespace to published version
Kim Alvefur <zash@zash.se>
parents: 1483
diff changeset
3 local csi_feature = st.stanza("csi", { xmlns = xmlns_csi });
1483
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 module:hook("stream-features", function (event)
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 if event.origin.username then
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 event.features:add_child(csi_feature);
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 end
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 end);
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 function refire_event(name)
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 return function (event)
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 if event.origin.username then
3395
eaf0b1e95016 mod_csi: Backport 989cf872d5c0 from Prosody 0.11 to preserve compatibility
Matthew Wild <mwild1@gmail.com>
parents: 1590
diff changeset
14 event.origin.state = event.stanza.name;
1483
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 module:fire_event(name, event);
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 return true;
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 end
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 end;
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 end
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20
1590
fbb4cd2922a1 mod_csi: Update namespace to published version
Kim Alvefur <zash@zash.se>
parents: 1483
diff changeset
21 module:hook("stanza/"..xmlns_csi..":active", refire_event("csi-client-active"));
fbb4cd2922a1 mod_csi: Update namespace to published version
Kim Alvefur <zash@zash.se>
parents: 1483
diff changeset
22 module:hook("stanza/"..xmlns_csi..":inactive", refire_event("csi-client-inactive"));
1483
90fe03e65d2c mod_csi: Client State Indication support
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23