diff options
author | Kim Alvefur <zash@zash.se> | 2011-08-08 18:23:53 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2011-08-08 18:23:53 +0200 |
commit | d29b8f340a4c795dd40a856f208d0d22017b328b (patch) | |
tree | 5a748fe8764bdd39f8bfdc2bec7685202ea60c65 | |
parent | 43ea7d28756d860df2762f3db7984fe1fd28a68b (diff) | |
download | prosody-d29b8f340a4c795dd40a856f208d0d22017b328b.tar.gz prosody-d29b8f340a4c795dd40a856f208d0d22017b328b.zip |
core.modulemanager, mod_disco: Add support for XEP-0128: Service Discovery Extensions
-rw-r--r-- | core/modulemanager.lua | 3 | ||||
-rw-r--r-- | plugins/mod_disco.lua | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/core/modulemanager.lua b/core/modulemanager.lua index 07a2b1c9..3cf893a1 100644 --- a/core/modulemanager.lua +++ b/core/modulemanager.lua @@ -278,6 +278,9 @@ end function api:add_identity(category, type, name) self:add_item("identity", {category = category, type = type, name = name}); end +function api:add_extension(data) + self:add_item("extension", data); +end function api:fire_event(...) return (hosts[self.host] or prosody).events.fire_event(...); diff --git a/plugins/mod_disco.lua b/plugins/mod_disco.lua index 907ca753..c3a9c54d 100644 --- a/plugins/mod_disco.lua +++ b/plugins/mod_disco.lua @@ -54,6 +54,12 @@ local function build_server_disco_info() done[feature] = true; end end + for _,extension in ipairs(module:get_host_items("extension")) do + if not done[extension] then + query:add_child(extension); + done[extension] = true; + end + end _cached_server_disco_info = query; _cached_server_caps_hash = calculate_hash(query); _cached_server_caps_feature = st.stanza("c", { @@ -81,8 +87,10 @@ end module:hook("item-added/identity", clear_disco_cache); module:hook("item-added/feature", clear_disco_cache); +module:hook("item-added/extension", clear_disco_cache); module:hook("item-removed/identity", clear_disco_cache); module:hook("item-removed/feature", clear_disco_cache); +module:hook("item-removed/extension", clear_disco_cache); -- Handle disco requests to the server module:hook("iq/host/http://jabber.org/protocol/disco#info:query", function(event) |