aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_c2s.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2015-04-20 17:01:56 +0300
committerAlexey Shchepin <alexey@process-one.net>2015-04-20 17:19:09 +0300
commitfd54181435f17a2aa54306b62bac83d551ead477 (patch)
treec924f7c4fea36bc65950f3f6d22908605166e622 /src/ejabberd_c2s.erl
parentMake s2s port configurable in test runner (diff)
Fixed error replying on blocked messages
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r--src/ejabberd_c2s.erl36
1 files changed, 21 insertions, 15 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 4603af998..863ce83ce 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -1680,12 +1680,17 @@ handle_info({route, From, To,
of
allow -> {true, Attrs, StateData};
deny ->
- Err =
- jlib:make_error_reply(Packet,
- ?ERR_SERVICE_UNAVAILABLE),
- ejabberd_router:route(To, From,
- Err),
- {false, Attrs, StateData}
+ case xml:get_attr_s(<<"type">>, Attrs) of
+ <<"error">> -> ok;
+ <<"result">> -> ok;
+ _ ->
+ Err =
+ jlib:make_error_reply(Packet,
+ ?ERR_SERVICE_UNAVAILABLE),
+ ejabberd_router:route(To, From,
+ Err)
+ end,
+ {false, Attrs, StateData}
end;
_ -> {true, Attrs, StateData}
end,
@@ -2171,15 +2176,16 @@ check_privacy_route(From, StateData, FromRoute, To,
case privacy_check_packet(StateData, From, To, Packet,
out)
of
- deny ->
- Lang = StateData#state.lang,
- ErrText = <<"Your active privacy list has denied "
- "the routing of this stanza.">>,
- Err = jlib:make_error_reply(Packet,
- ?ERRT_NOT_ACCEPTABLE(Lang, ErrText)),
- ejabberd_router:route(To, From, Err),
- ok;
- allow -> ejabberd_router:route(FromRoute, To, Packet)
+ deny ->
+ Lang = StateData#state.lang,
+ ErrText = <<"Your active privacy list has denied "
+ "the routing of this stanza.">>,
+ 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)
end.
%% Check if privacy rules allow this delivery