diff options
author | Evgeny Khramtsov <xramtsov@gmail.com> | 2017-02-20 10:21:16 +0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-20 10:21:15 +0400 |
commit | a664d6389e7a25005d0a0b4a7528d28ef1673c85 (patch) | |
tree | f4e506cccd00c8523e70a16894edd167d127a784 | |
parent | Get rid of non-breaking space (diff) | |
parent | Let ejabberd_c2s handle <session/> IQ (diff) |
Merge pull request #1555 from weiss/count-session-iq
Let ejabberd_c2s handle <session/> IQ
-rw-r--r-- | src/ejabberd_c2s.erl | 7 | ||||
-rw-r--r-- | src/xmpp_stream_in.erl | 13 |
2 files changed, 8 insertions, 12 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 036bea79e..dd0221496 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -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); diff --git a/src/xmpp_stream_in.erl b/src/xmpp_stream_in.erl index 7d9b0dc88..501db04ef 100644 --- a/src/xmpp_stream_in.erl +++ b/src/xmpp_stream_in.erl @@ -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 -> |