Software /
code /
prosody-modules
File
mod_default_bookmarks/mod_default_bookmarks.lua @ 2712:d89ab70808f6
mod_cloud_notify: fix bug when multiple resources are used
This bug was triggered under the rare circumstances that a message arrived
and one resource was smacks hibernated while the other one(s) were offline.
Then only the hibernated resource but not the offline one(s) (or the other
way round) got notified.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Mon, 08 May 2017 18:24:29 +0200 |
parent | 1343:7dbde05b48a9 |
child | 3236:73906187f964 |
line wrap: on
line source
-- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain -- Copyright (C) 2011 Kim Alvefur -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- local st = require "util.stanza" local dm_load = require "util.datamanager".load local jid_split = require "util.jid".split module:hook("iq/self/jabber:iq:private:query", function(event) local origin, stanza = event.origin, event.stanza; local typ = stanza.attr.type; local from = stanza.attr.from; local query = stanza.tags[1]; if #query.tags == 1 and typ == "get" then local tag = query.tags[1]; local key = tag.name..":"..tag.attr.xmlns; if key == "storage:storage:bookmarks" then local data, err = dm_load(origin.username, origin.host, "private"); if not(data and data[key]) then local bookmarks = module:get_option("default_bookmarks"); if bookmarks and #bookmarks > 0 then local reply = st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"}) :tag("storage", { xmlns = "storage:bookmarks" }); local nick = jid_split(from); for i=1,#bookmarks do local bookmark = bookmarks[i]; if type(bookmark) ~= "table" then -- assume it's only a jid bookmark = { jid = bookmark, name = jid_split(bookmark) }; end reply:tag("conference", { jid = bookmark.jid, name = bookmark.name, autojoin = "1", }):tag("nick"):text(nick):up():up(); end origin.send(reply); return true; end end end end end, 1);