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