From: Christophe Romain Date: Mon, 8 Dec 2008 19:38:59 +0000 (+0000) Subject: ignore unknown configuration fields (EJAB-762); fix node authorization bug (EJAB... X-Git-Tag: v2.0.3~32 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=feb0bceb41ec1a3680ba886b8dc1f1a6467ff3d2;p=ejabberd ignore unknown configuration fields (EJAB-762); fix node authorization bug (EJAB-798) SVN Revision: 1713 --- diff --git a/ChangeLog b/ChangeLog index 9c3a07b88..76e7a24ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,11 @@ * src/mod_pubsub/mod_pubsub.erl: Likewise * src/mod_caps.erl: Likewise + * src/mod_pubsub.erl: ignore unknown configuration fields (EJAB-762); + fix node authorization bug (EJAB-798) + + * src/pubsub.hrl: remove unused pubsub_presence record + 2008-12-08 Mickael Remond * src/ejabberd_c2s.erl: Enforce client stanza from attribute diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl index c52703075..81ed6f64e 100644 --- a/src/mod_pubsub/mod_pubsub.erl +++ b/src/mod_pubsub/mod_pubsub.erl @@ -1049,7 +1049,7 @@ find_authorization_response(Packet) -> [] -> none; [XFields] when is_list(XFields) -> case lists:keysearch("FORM_TYPE", 1, XFields) of - {value, {_, ?NS_PUBSUB_SUB_AUTH}} -> + {value, {_, [?NS_PUBSUB_SUB_AUTH]}} -> XFields; _ -> invalid @@ -1060,8 +1060,8 @@ handle_authorization_response(Host, From, To, Packet, XFields) -> case {lists:keysearch("pubsub#node", 1, XFields), lists:keysearch("pubsub#subscriber_jid", 1, XFields), lists:keysearch("pubsub#allow", 1, XFields)} of - {{value, {_, SNode}}, {value, {_, SSubscriber}}, - {value, {_, SAllow}}} -> + {{value, {_, [SNode]}}, {value, {_, [SSubscriber]}}, + {value, {_, [SAllow]}}} -> Node = case Host of {_, _, _} -> [SNode]; _ -> string:tokens(SNode, "/") @@ -1076,7 +1076,7 @@ handle_authorization_response(Host, From, To, Packet, XFields) -> %%options = Options, owners = Owners}) -> IsApprover = lists:member(jlib:jid_tolower(jlib:jid_remove_resource(From)), Owners), - Subscription = node_call(Type, get_subscription, [Host, Node, Subscriber]), + {result, Subscription} = node_call(Type, get_subscription, [Host, Node, Subscriber]), if not IsApprover -> {error, ?ERR_FORBIDDEN}; @@ -2637,8 +2637,9 @@ set_xoption([{"pubsub#type", Value} | Opts], NewOpts) -> ?SET_STRING_XOPT(type, Value); set_xoption([{"pubsub#body_xslt", Value} | Opts], NewOpts) -> ?SET_STRING_XOPT(body_xslt, Value); -set_xoption([_ | _Opts], _NewOpts) -> - {error, ?ERR_NOT_ACCEPTABLE}. +set_xoption([_ | Opts], NewOpts) -> + % skip unknown field + set_xoption(Opts, NewOpts). %%%% plugin handling diff --git a/src/mod_pubsub/pubsub.hrl b/src/mod_pubsub/pubsub.hrl index 3b3d4cce1..959124e4c 100644 --- a/src/mod_pubsub/pubsub.hrl +++ b/src/mod_pubsub/pubsub.hrl @@ -119,13 +119,3 @@ payload = [] }). - -%% @type pubsubPresence() = #pubsub_presence{ -%% key = {Host::host(), User::string(), Server::string()}, -%% presence = list(). -%%%

This is the format of the published presence table. The type of the -%%% table is: set,ram.

--record(pubsub_presence, {key, - resource - }). -