Skip to content

Commit

Permalink
Merge pull request processone#540 from weiss/queue-error-stanza
Browse files Browse the repository at this point in the history
Add privacy error stanza to XEP-0198 queue
  • Loading branch information
Christophe Romain committed Apr 21, 2015
2 parents ed79a61 + 94936b2 commit 28090a3
Showing 1 changed file with 15 additions and 24 deletions.
39 changes: 15 additions & 24 deletions src/ejabberd_c2s.erl
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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
Expand All @@ -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,
Expand Down

0 comments on commit 28090a3

Please sign in to comment.