Let ejabberd_c2s handle <session/> IQ

This fixes the counting of incoming stanzas for stream management.
This commit is contained in:
Holger Weiss 2017-02-19 22:43:10 +01:00
parent 70bfc5b4a8
commit 7c159e3881
2 changed files with 8 additions and 12 deletions

View File

@ -448,6 +448,13 @@ handle_authenticated_packet(Pkt, #{lserver := LServer, jid := JID,
case Pkt2 of
drop ->
State2;
#iq{type = set, sub_els = [_]} ->
case xmpp:get_subtag(Pkt1, #xmpp_session{}) of
#xmpp_session{} ->
send(State2, xmpp:make_iq_result(Pkt1));
_ ->
check_privacy_then_route(State2, Pkt1)
end;
#presence{to = #jid{luser = LUser, lserver = LServer,
lresource = <<"">>}} ->
process_self_presence(State2, Pkt2);

View File

@ -577,20 +577,9 @@ process_unauthenticated_packet(Pkt, #{mod := Mod} = State) ->
end.
-spec process_authenticated_packet(xmpp_element(), state()) -> state().
process_authenticated_packet(Pkt, #{xmlns := NS, mod := Mod} = State) ->
process_authenticated_packet(Pkt, #{mod := Mod} = State) ->
Pkt1 = set_lang(Pkt, State),
case set_from_to(Pkt1, State) of
{ok, #iq{type = set, sub_els = [_]} = Pkt2} when NS == ?NS_CLIENT ->
case xmpp:get_subtag(Pkt2, #xmpp_session{}) of
#xmpp_session{} ->
send_pkt(State, xmpp:make_iq_result(Pkt2));
_ ->
try Mod:handle_authenticated_packet(Pkt2, State)
catch _:undef ->
Err = xmpp:err_service_unavailable(),
send_error(State, Pkt, Err)
end
end;
{ok, Pkt2} ->
try Mod:handle_authenticated_packet(Pkt2, State)
catch _:undef ->