aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/mod_mam/mamprefsxml.lib.lua14
-rw-r--r--spec/scansion/mam_prefs_prep.scs36
-rw-r--r--spec/scansion/prosody.cfg.lua3
3 files changed, 48 insertions, 5 deletions
diff --git a/plugins/mod_mam/mamprefsxml.lib.lua b/plugins/mod_mam/mamprefsxml.lib.lua
index 8eee78d8..c408fbea 100644
--- a/plugins/mod_mam/mamprefsxml.lib.lua
+++ b/plugins/mod_mam/mamprefsxml.lib.lua
@@ -2,6 +2,7 @@
-- Copyright (C) 2008-2017 Matthew Wild
-- Copyright (C) 2008-2017 Waqas Hussain
-- Copyright (C) 2011-2017 Kim Alvefur
+-- Copyright (C) 2018 Emmanuel Gil Peyrot
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
@@ -10,6 +11,7 @@
--
local st = require"util.stanza";
+local jid_prep = require"util.jid".prep;
local xmlns_mam = "urn:xmpp:mam:2";
local default_attrs = {
@@ -42,16 +44,20 @@ local function fromstanza(prefstanza)
local always = prefstanza:get_child("always");
if always then
for rule in always:childtags("jid") do
- local jid = rule:get_text();
- prefs[jid] = true;
+ local jid = jid_prep(rule:get_text());
+ if jid then
+ prefs[jid] = true;
+ end
end
end
local never = prefstanza:get_child("never");
if never then
for rule in never:childtags("jid") do
- local jid = rule:get_text();
- prefs[jid] = false;
+ local jid = jid_prep(rule:get_text());
+ if jid then
+ prefs[jid] = false;
+ end
end
end
diff --git a/spec/scansion/mam_prefs_prep.scs b/spec/scansion/mam_prefs_prep.scs
new file mode 100644
index 00000000..9589ec65
--- /dev/null
+++ b/spec/scansion/mam_prefs_prep.scs
@@ -0,0 +1,36 @@
+# mod_mam shold apply JIDprep in prefs
+
+[Client] Romeo
+ jid: romeo@localhost
+ password: password
+
+-----
+
+Romeo connects
+
+Romeo sends:
+ <iq id="lx2" type="set">
+ <prefs xmlns="urn:xmpp:mam:2" default="roster">
+ <always>
+ <jid>JULIET@MONTAGUE.LIT</jid>
+ </always>
+ <never>
+ <jid>MONTAGUE@MONTAGUE.LIT</jid>
+ </never>
+ </prefs>
+ </iq>
+
+Romeo receives:
+ <iq id="lx2" type="result">
+ <prefs xmlns="urn:xmpp:mam:2" default="roster">
+ <always>
+ <jid>juliet@montague.lit</jid>
+ </always>
+ <never>
+ <jid>montague@montague.lit</jid>
+ </never>
+ </prefs>
+ </iq>
+
+Romeo disconnects
+
diff --git a/spec/scansion/prosody.cfg.lua b/spec/scansion/prosody.cfg.lua
index 8d6e7c0a..fd742db6 100644
--- a/spec/scansion/prosody.cfg.lua
+++ b/spec/scansion/prosody.cfg.lua
@@ -26,7 +26,7 @@ modules_enabled = {
"time"; -- Let others know the time here on this server
"ping"; -- Replies to XMPP pings with pongs
"register"; -- Allow users to register on this server using a client and change passwords
- --"mam"; -- Store messages in an archive and allow users to access it
+ "mam"; -- Store messages in an archive and allow users to access it
--"csi_simple"; -- Simple Mobile optimizations
-- Admin interfaces
@@ -65,6 +65,7 @@ insecure_open_authentication = "Yes please, I know what I'm doing!"
storage = "memory"
+mam_smart_enable = true
-- For the "sql" backend, you can uncomment *one* of the below to configure:
--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.