From ac31008ee061b2379b21ca1e5fd733ce0deab708 Mon Sep 17 00:00:00 2001 From: Christophe Romain Date: Fri, 11 Jan 2008 13:57:29 +0000 Subject: [PATCH] don't ask capabilities to MUC room participants SVN Revision: 1147 --- ChangeLog | 5 +++++ src/mod_caps.erl | 23 ++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4d893eea3..6fddcda9a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-01-11 Christophe Romain + + * src/mod_caps.erl: don't ask capabilities to MUC room participants + (EJAB-478) + 2008-01-10 Christophe Romain * src/mod_pubsub/nodetree_default: Force PEP parent node to be [] diff --git a/src/mod_caps.erl b/src/mod_caps.erl index 1bec88817..1f89fbb84 100644 --- a/src/mod_caps.erl +++ b/src/mod_caps.erl @@ -64,20 +64,29 @@ %% stanza) and returns an opaque value representing the %% Entity Capabilities contained therein, or the atom nothing if no %% capabilities are advertised. -read_caps([{xmlelement, "c", Attrs, _Els} | Tail]) -> +read_caps(Els) -> + read_caps(Els, nothing). +read_caps([{xmlelement, "c", Attrs, _Els} | Tail], Result) -> case xml:get_attr_s("xmlns", Attrs) of ?NS_CAPS -> Node = xml:get_attr_s("node", Attrs), Version = xml:get_attr_s("ver", Attrs), Exts = string:tokens(xml:get_attr_s("ext", Attrs), " "), - #caps{node = Node, version = Version, exts = Exts}; + read_caps(Tail, #caps{node = Node, version = Version, exts = Exts}); _ -> - read_caps(Tail) + read_caps(Tail, Result) end; -read_caps([_ | Tail]) -> - read_caps(Tail); -read_caps([]) -> - nothing. +read_caps([{xmlelement, "x", Attrs, _Els} | Tail], Result) -> + case xml:get_attr_s("xmlns", Attrs) of + ?NS_MUC_USER -> + nothing; + _ -> + read_caps(Tail, Result) + end; +read_caps([_ | Tail], Result) -> + read_caps(Tail, Result); +read_caps([], Result) -> + Result. %% note_caps should be called to make the module request disco %% information. Host is the host that asks, From is the full JID that