aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_c2s.erl12
-rw-r--r--src/jlib.erl2
2 files changed, 9 insertions, 5 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index d4b68096e..ba4882c88 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -1254,7 +1254,7 @@ handle_info({route, From, To, Packet}, StateName, StateData) ->
ejabberd_router:route(To, From, Err)
end,
{false, Attrs, StateData};
- #iq{} ->
+ IQ when (is_record(IQ, iq)) or (IQ == reply) ->
case ejabberd_hooks:run_fold(
privacy_check_packet, StateData#state.server,
allow,
@@ -1265,14 +1265,16 @@ handle_info({route, From, To, Packet}, StateName, StateData) ->
in]) of
allow ->
{true, Attrs, StateData};
- deny ->
+ deny when is_record(IQ, iq) ->
Err = jlib:make_error_reply(
- Packet, ?ERR_FEATURE_NOT_IMPLEMENTED),
+ Packet, ?ERR_SERVICE_UNAVAILABLE),
ejabberd_router:route(To, From, Err),
+ {false, Attrs, StateData};
+ deny when IQ == reply ->
{false, Attrs, StateData}
end;
- _ ->
- {true, Attrs, StateData}
+ IQ when (IQ == invalid) or (IQ == not_iq) ->
+ {false, Attrs, StateData}
end;
"message" ->
case ejabberd_hooks:run_fold(
diff --git a/src/jlib.erl b/src/jlib.erl
index ce2427fa1..e674c750a 100644
--- a/src/jlib.erl
+++ b/src/jlib.erl
@@ -364,6 +364,8 @@ get_iq_namespace({xmlelement, Name, _Attrs, Els}) when Name == "iq" ->
get_iq_namespace(_) ->
"".
+%% @spec (xmlelement()) -> iq() | reply | invalid | not_iq
+
iq_query_info(El) ->
iq_info_internal(El, request).