aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2015-04-20 22:03:18 +0200
committerHolger Weiss <holger@zedat.fu-berlin.de>2015-04-20 22:03:18 +0200
commit94936b261e6a50a8a0581e8172301bd27d52f001 (patch)
treef8c3892d5c5a260c92c6c73919bf090af6a8aa40
parentFixed error replying on blocked messages (diff)
Add privacy error stanza to XEP-0198 queue
-rw-r--r--src/ejabberd_c2s.erl39
1 files changed, 15 insertions, 24 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 863ce83ce..f2d16e878 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -1292,15 +1292,13 @@ session_established2(El, StateData) ->
ejabberd_hooks:run(user_send_packet, Server,
[FromJID, ToJID, NewEl]),
check_privacy_route(FromJID, NewStateData,
- FromJID, ToJID, NewEl),
- NewStateData
+ FromJID, ToJID, NewEl)
end;
<<"message">> ->
ejabberd_hooks:run(user_send_packet, Server,
[FromJID, ToJID, NewEl]),
check_privacy_route(FromJID, NewStateData, FromJID,
- ToJID, NewEl),
- NewStateData;
+ ToJID, NewEl);
_ -> NewStateData
end
end,
@@ -2138,37 +2136,29 @@ presence_track(From, To, Packet, StateData) ->
Server = StateData#state.server,
case xml:get_attr_s(<<"type">>, Attrs) of
<<"unavailable">> ->
- check_privacy_route(From, StateData, From, To, Packet),
A = remove_element(LTo, StateData#state.pres_a),
- StateData#state{pres_a = A};
+ check_privacy_route(From, StateData#state{pres_a = A}, From, To, Packet);
<<"subscribe">> ->
- try_roster_subscribe(subscribe, User, Server, From, To, Packet, StateData),
- StateData;
+ try_roster_subscribe(subscribe, User, Server, From, To, Packet, StateData);
<<"subscribed">> ->
ejabberd_hooks:run(roster_out_subscription, Server,
[User, Server, To, subscribed]),
check_privacy_route(From, StateData,
- jlib:jid_remove_resource(From), To, Packet),
- StateData;
+ jlib:jid_remove_resource(From), To, Packet);
<<"unsubscribe">> ->
- try_roster_subscribe(unsubscribe, User, Server, From, To, Packet, StateData),
- StateData;
+ try_roster_subscribe(unsubscribe, User, Server, From, To, Packet, StateData);
<<"unsubscribed">> ->
ejabberd_hooks:run(roster_out_subscription, Server,
[User, Server, To, unsubscribed]),
check_privacy_route(From, StateData,
- jlib:jid_remove_resource(From), To, Packet),
- StateData;
+ jlib:jid_remove_resource(From), To, Packet);
<<"error">> ->
- check_privacy_route(From, StateData, From, To, Packet),
- StateData;
+ check_privacy_route(From, StateData, From, To, Packet);
<<"probe">> ->
- check_privacy_route(From, StateData, From, To, Packet),
- StateData;
+ check_privacy_route(From, StateData, From, To, Packet);
_ ->
- check_privacy_route(From, StateData, From, To, Packet),
A = (?SETS):add_element(LTo, StateData#state.pres_a),
- StateData#state{pres_a = A}
+ check_privacy_route(From, StateData#state{pres_a = A}, From, To, Packet)
end.
check_privacy_route(From, StateData, FromRoute, To,
@@ -2183,9 +2173,10 @@ check_privacy_route(From, StateData, FromRoute, To,
Err = jlib:make_error_reply(Packet,
?ERRT_NOT_ACCEPTABLE(Lang, ErrText)),
Err2 = jlib:replace_from_to(To, From, Err),
- send_element(StateData, Err2),
- ok;
- allow -> ejabberd_router:route(FromRoute, To, Packet)
+ send_stanza(StateData, Err2);
+ allow ->
+ ejabberd_router:route(FromRoute, To, Packet),
+ StateData
end.
%% Check if privacy rules allow this delivery
@@ -2208,7 +2199,7 @@ try_roster_subscribe(Type, User, Server, From, To, Packet, StateData) ->
case acl:match_rule(Server, Access, JID1) of
deny ->
%% Silently drop this (un)subscription request
- ok;
+ StateData;
allow ->
ejabberd_hooks:run(roster_out_subscription,
Server,