util.httpstream: A little cleanup of the HTTP path.
[prosody.git] / plugins / mod_pubsub.lua
index f26178b9e38b2ac72442ca41ebfc0e35faf3757a..841de14761b8108e070911b88096f74b8806a292 100644 (file)
@@ -193,7 +193,9 @@ local function add_disco_features_from_service(disco, service)
        for method, features in pairs(feature_map) do
                if service[method] then
                        for _, feature in ipairs(features) do
-                               disco:tag("feature", { var = xmlns_pubsub.."#"..feature }):up();
+                               if feature then
+                                       disco:tag("feature", { var = xmlns_pubsub.."#"..feature }):up();
+                               end
                        end
                end
        end
@@ -205,10 +207,11 @@ local function add_disco_features_from_service(disco, service)
 end
 
 local function build_disco_info(service)
-       disco_info = st.stanza("query", { xmlns = "http://jabber.org/protocol/disco#info" })
+       local disco_info = st.stanza("query", { xmlns = "http://jabber.org/protocol/disco#info" })
                :tag("identity", { category = "pubsub", type = "service" }):up()
                :tag("feature", { var = "http://jabber.org/protocol/pubsub" }):up();
        add_disco_features_from_service(disco_info, service);
+       return disco_info;
 end
 
 module:hook("iq-get/host/http://jabber.org/protocol/disco#info:query", function (event)
@@ -233,7 +236,8 @@ end);
 
 local admin_aff = module:get_option_string("default_admin_affiliation", "owner");
 local function get_affiliation(jid)
-       if jid == module.host or usermanager.is_admin(jid, module.host) then
+       local bare_jid = jid_bare(jid);
+       if bare_jid == module.host or usermanager.is_admin(bare_jid, module.host) then
                return admin_aff;
        end
 end