aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2016-06-27 16:40:57 +0200
committerPaweł Chmielowski <pchmielowski@process-one.net>2016-06-27 16:40:57 +0200
commit3446aba753625060af68396c6edd8e76a4950a61 (patch)
tree07b319461b8e6018664a773199903e21e408cf17
parentInline muc access rules (diff)
Include correct version in stream:stream when reporting errors
This fixes issue #1174
-rw-r--r--src/ejabberd_c2s.erl12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 794c04f5f..f431f6890 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -364,11 +364,17 @@ wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) ->
%% avoid possible DoS/flood attacks
<<"">>
end,
+ StreamVersion = case fxml:get_attr_s(<<"version">>, Attrs) of
+ <<"1.0">> ->
+ <<"1.0">>;
+ _ ->
+ <<"">>
+ end,
IsBlacklistedIP = is_ip_blacklisted(StateData#state.ip, Lang),
case lists:member(Server, ?MYHOSTS) of
true when IsBlacklistedIP == false ->
change_shaper(StateData, jid:make(<<"">>, Server, <<"">>)),
- case fxml:get_attr_s(<<"version">>, Attrs) of
+ case StreamVersion of
<<"1.0">> ->
send_header(StateData, Server, <<"1.0">>, DefaultLang),
case StateData#state.authenticated of
@@ -534,11 +540,11 @@ wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) ->
{true, LogReason, ReasonT} = IsBlacklistedIP,
?INFO_MSG("Connection attempt from blacklisted IP ~s: ~s",
[jlib:ip_to_list(IP), LogReason]),
- send_header(StateData, Server, <<"">>, DefaultLang),
+ send_header(StateData, Server, StreamVersion, DefaultLang),
send_element(StateData, ?POLICY_VIOLATION_ERR(Lang, ReasonT)),
{stop, normal, StateData};
_ ->
- send_header(StateData, ?MYNAME, <<"">>, DefaultLang),
+ send_header(StateData, ?MYNAME, StreamVersion, DefaultLang),
send_element(StateData, ?HOST_UNKNOWN_ERR),
{stop, normal, StateData}
end;