25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-22 16:20:52 +01:00

Convert to exmpp the parts in mod_pubsub recently merged from trunk.

Warning: Ejabberd is unusable because the rest of trunk hasn't been
merged yet!

PR:		EJABP-1

SVN Revision: 1730
This commit is contained in:
Jean-Sébastien Pédron 2008-12-16 10:31:08 +00:00
parent 96aaba738b
commit 62f9f6e6c5
2 changed files with 20 additions and 16 deletions

View File

@ -1,6 +1,12 @@
2008-12-16 Jean-Sébastien Pédron <js.pedron@meetic-corp.com>
* src/mod_pubsub/mod_pubsub.erl: Convert to exmpp the parts recently
merged from trunk. Warning: Ejabberd is unusable because the rest of
trunk hasn't been merged yet!
2008-12-15 Christophe Romain <cromain@process-one.net> 2008-12-15 Christophe Romain <cromain@process-one.net>
* src/mod_pubsub/mod_pubsub.erl: fix get_item_name deadlock on * src/mod_pubsub/mod_pubsub.erl: Fix get_item_name deadlock on
transaction transaction
2008-12-10 Jean-Sébastien Pédron <js.pedron@meetic-corp.com> 2008-12-10 Jean-Sébastien Pédron <js.pedron@meetic-corp.com>

View File

@ -480,9 +480,9 @@ handle_cast({presence, JID, Pid}, State) ->
case catch ejabberd_c2s:get_subscribed(Pid) of case catch ejabberd_c2s:get_subscribed(Pid) of
Contacts when is_list(Contacts) -> Contacts when is_list(Contacts) ->
lists:foreach( lists:foreach(
fun({User, Server, _}) -> fun({{User, Server, _}, _}) ->
Owner = {User, Server, undefined}, Owner = {User, Server, undefined},
lists:foreach(fun(#pubsub_node{nodeid = {_, Node}, options = Options}) -> lists:foreach(fun(#pubsub_node{nodeid = {_, Node}, options = Options} = PN) ->
case get_option(Options, send_last_published_item) of case get_option(Options, send_last_published_item) of
on_sub_and_presence -> on_sub_and_presence ->
case is_caps_notify(ServerHost, Node, LJID) of case is_caps_notify(ServerHost, Node, LJID) of
@ -950,9 +950,9 @@ iq_pubsub(Host, ServerHost, From, IQType, SubEl, _Lang, Access, Plugins) ->
{get, 'affiliations'} -> {get, 'affiliations'} ->
get_affiliations(Host, From, Plugins); get_affiliations(Host, From, Plugins);
{get, "options"} -> {get, "options"} ->
{error, extended_error(?ERR_FEATURE_NOT_IMPLEMENTED, unsupported, "subscription-options")}; {error, extended_error('feature-not-implemented', unsupported, "subscription-options")};
{set, "options"} -> {set, "options"} ->
{error, extended_error(?ERR_FEATURE_NOT_IMPLEMENTED, unsupported, "subscription-options")}; {error, extended_error('feature-not-implemented', unsupported, "subscription-options")};
_ -> _ ->
{error, 'feature-not-implemented'} {error, 'feature-not-implemented'}
end; end;
@ -1070,14 +1070,12 @@ find_authorization_response(Packet) ->
%% Plugins = [Plugin::string()] %% Plugins = [Plugin::string()]
%% @doc Send a message to JID with the supplied Subscription %% @doc Send a message to JID with the supplied Subscription
send_authorization_approval(Host, JID, Node, Subscription) -> send_authorization_approval(Host, JID, Node, Subscription) ->
Stanza = {xmlelement, "message", Stanza = #xmlel{ns = ?NS_JABBER_CLIENT, name = 'message', children =
[], [#xmlel{ns = ?NS_PUBSUB_EVENT, name = 'event', children =
[{xmlelement, "event", [{"xmlns", ?NS_PUBSUB_EVENT}], [#xmlel{ns = ?NS_PUBSUB_EVENT, name = 'subscription', attrs =
[{xmlelement, "subscription", [#xmlattr{name = 'node', value = Node},
[{"node", Node}, #xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(JID)},
{"jid", jlib:jid_to_string(JID)}, #xmlattr{name = 'subscription', value = subscription_to_string(Subscription)}]}]}]},
{"subscription", subscription_to_string(Subscription)}],
[]}]}]},
ejabberd_router ! {route, service_jid(Host), JID, Stanza}. ejabberd_router ! {route, service_jid(Host), JID, Stanza}.
handle_authorization_response(Host, From, To, Packet, XFields) -> handle_authorization_response(Host, From, To, Packet, XFields) ->
@ -2129,7 +2127,7 @@ is_to_delivered({User, Server, _}, _, true) ->
%% @doc <p>Count occurence of given element in payload.</p> %% @doc <p>Count occurence of given element in payload.</p>
payload_xmlelements(Payload) -> payload_xmlelements(Payload, 0). payload_xmlelements(Payload) -> payload_xmlelements(Payload, 0).
payload_xmlelements([], Count) -> Count; payload_xmlelements([], Count) -> Count;
payload_xmlelements([{xmlelement, _, _, _}|Tail], Count) -> payload_xmlelements(Tail, Count+1); payload_xmlelements([#xmlel{}|Tail], Count) -> payload_xmlelements(Tail, Count+1);
payload_xmlelements([_|Tail], Count) -> payload_xmlelements(Tail, Count). payload_xmlelements([_|Tail], Count) -> payload_xmlelements(Tail, Count).
%%%%%% broadcast functions %%%%%% broadcast functions
@ -2377,7 +2375,7 @@ broadcast_by_caps({LUser, LServer, LResource}, Node, _Type, Stanza) ->
lists:foreach(fun({U, S, R}) -> lists:foreach(fun({U, S, R}) ->
case is_caps_notify(LServer, Node, {U, S, R}) of case is_caps_notify(LServer, Node, {U, S, R}) of
true -> true ->
ejabberd_router ! {route, Sender, exmpp_jlib:make_jid(U, S, R), Stanza}; ejabberd_router ! {route, Sender, exmpp_jid:make_jid(U, S, R), Stanza};
false -> false ->
ok ok
end end
@ -2674,7 +2672,7 @@ set_xoption([{"pubsub#type", Value} | Opts], NewOpts) ->
?SET_STRING_XOPT(type, Value); ?SET_STRING_XOPT(type, Value);
set_xoption([{"pubsub#body_xslt", Value} | Opts], NewOpts) -> set_xoption([{"pubsub#body_xslt", Value} | Opts], NewOpts) ->
?SET_STRING_XOPT(body_xslt, Value); ?SET_STRING_XOPT(body_xslt, Value);
set_xoption([_ | _Opts], _NewOpts) -> set_xoption([_ | Opts], NewOpts) ->
% skip unknown field % skip unknown field
set_xoption(Opts, NewOpts). set_xoption(Opts, NewOpts).