diff options
Diffstat (limited to 'net-im/ejabberd/files/ejabberd-2.0.4-fix-EJAB-890.patch')
-rw-r--r-- | net-im/ejabberd/files/ejabberd-2.0.4-fix-EJAB-890.patch | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/net-im/ejabberd/files/ejabberd-2.0.4-fix-EJAB-890.patch b/net-im/ejabberd/files/ejabberd-2.0.4-fix-EJAB-890.patch deleted file mode 100644 index 3da58ce6b83d..000000000000 --- a/net-im/ejabberd/files/ejabberd-2.0.4-fix-EJAB-890.patch +++ /dev/null @@ -1,167 +0,0 @@ -diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl -index 9bd5ba5..40cba2a 100644 ---- ejabberd_c2s.erl -+++ ejabberd_c2s.erl -@@ -1091,21 +1091,16 @@ handle_info({route, From, To, Packet}, StateName, StateData) -> - Attrs1 = lists:keydelete("type", 1, Attrs), - {true, [{"type", "unavailable"} | Attrs1], StateData}; - "subscribe" -> -- Reason = xml:get_path_s(Packet,[{elem,"status"},cdata]), -- SRes = check_privacy_subs(in, subscribe, From, To, -- Packet, Reason, StateData), -+ SRes = is_privacy_allow(From, To, Packet, StateData#state.privacy_list), - {SRes, Attrs, StateData}; - "subscribed" -> -- SRes = check_privacy_subs(in, subscribed, From, To, -- Packet, "", StateData), -+ SRes = is_privacy_allow(From, To, Packet, StateData#state.privacy_list), - {SRes, Attrs, StateData}; - "unsubscribe" -> -- SRes = check_privacy_subs(in, unsubscribe, From, To, -- Packet, "", StateData), -+ SRes = is_privacy_allow(From, To, Packet, StateData#state.privacy_list), - {SRes, Attrs, StateData}; - "unsubscribed" -> -- SRes = check_privacy_subs(in, unsubscribed, From, To, -- Packet, "", StateData), -+ SRes = is_privacy_allow(From, To, Packet, StateData#state.privacy_list), - {SRes, Attrs, StateData}; - _ -> - case ejabberd_hooks:run_fold( -@@ -1628,35 +1623,18 @@ presence_track(From, To, Packet, StateData) -> - pres_a = A} - end. - --%% Check privacy rules for subscription requests and call the roster storage --check_privacy_subs(Dir, Type, From, To, Packet, Reason, StateData) -> -- case is_privacy_allow(From, To, Dir, Packet, StateData) of -- true -> -- ejabberd_hooks:run_fold( -- roster_in_subscription, -- To#jid.lserver, -- false, -- [To#jid.user, To#jid.server, From, Type, Reason]), -- true; -- false -> -- false -- end. -- --%% Check if privacy rules allow this delivery, then push to roster --is_privacy_allow(From, To, Dir, Packet, StateData) -> -- case ejabberd_hooks:run_fold( -- privacy_check_packet, StateData#state.server, -- allow, -- [StateData#state.user, -- StateData#state.server, -- StateData#state.privacy_list, -- {From, To, Packet}, -- Dir]) of -- deny -> -- false; -- allow -> -- true -- end. -+%% Check if privacy rules allow this delivery -+is_privacy_allow(From, To, Packet, PrivacyList) -> -+ User = To#jid.user, -+ Server = To#jid.server, -+ allow == ejabberd_hooks:run_fold( -+ privacy_check_packet, Server, -+ allow, -+ [User, -+ Server, -+ PrivacyList, -+ {From, To, Packet}, -+ in]). - - presence_broadcast(StateData, From, JIDSet, Packet) -> - lists:foreach(fun(JID) -> -diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl -index 9a56e5f..148ef5a 100644 ---- ejabberd_sm.erl -+++ ejabberd_sm.erl -@@ -59,6 +59,7 @@ - -include("ejabberd.hrl"). - -include("jlib.hrl"). - -include("ejabberd_ctl.hrl"). -+-include("mod_privacy.hrl"). - - -record(session, {sid, usr, us, priority, info}). - -record(state, {}). -@@ -381,13 +382,40 @@ do_route(From, To, Packet) -> - {Pass, _Subsc} = - case xml:get_attr_s("type", Attrs) of - "subscribe" -> -- {true, true}; -+ Reason = xml:get_path_s( -+ Packet, -+ [{elem, "status"}, cdata]), -+ {is_privacy_allow(From, To, Packet) andalso -+ ejabberd_hooks:run_fold( -+ roster_in_subscription, -+ LServer, -+ false, -+ [User, Server, From, subscribe, Reason]), -+ true}; - "subscribed" -> -- {true, true}; -+ {is_privacy_allow(From, To, Packet) andalso -+ ejabberd_hooks:run_fold( -+ roster_in_subscription, -+ LServer, -+ false, -+ [User, Server, From, subscribed, ""]), -+ true}; - "unsubscribe" -> -- {true, true}; -+ {is_privacy_allow(From, To, Packet) andalso -+ ejabberd_hooks:run_fold( -+ roster_in_subscription, -+ LServer, -+ false, -+ [User, Server, From, unsubscribe, ""]), -+ true}; - "unsubscribed" -> -- {true, true}; -+ {is_privacy_allow(From, To, Packet) andalso -+ ejabberd_hooks:run_fold( -+ roster_in_subscription, -+ LServer, -+ false, -+ [User, Server, From, unsubscribed, ""]), -+ true}; - _ -> - {true, false} - end, -@@ -446,6 +474,31 @@ do_route(From, To, Packet) -> - end - end. - -+%% The default list applies to the user as a whole, -+%% and is processed if there is no active list set -+%% for the target session/resource to which a stanza is addressed, -+%% or if there are no current sessions for the user. -+is_privacy_allow(From, To, Packet) -> -+ User = To#jid.user, -+ Server = To#jid.server, -+ PrivacyList = ejabberd_hooks:run_fold(privacy_get_user_list, Server, -+ #userlist{}, [User, Server]), -+ is_privacy_allow(From, To, Packet, PrivacyList). -+ -+%% Check if privacy rules allow this delivery -+%% Function copied from ejabberd_c2s.erl -+is_privacy_allow(From, To, Packet, PrivacyList) -> -+ User = To#jid.user, -+ Server = To#jid.server, -+ allow == ejabberd_hooks:run_fold( -+ privacy_check_packet, Server, -+ allow, -+ [User, -+ Server, -+ PrivacyList, -+ {From, To, Packet}, -+ in]). -+ - route_message(From, To, Packet) -> - LUser = To#jid.luser, - LServer = To#jid.lserver, |