diff options
-rw-r--r-- | src/ejabberd_c2s.erl | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 82dce0f08..a6112673b 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -1912,12 +1912,7 @@ send_stanza(StateData, Stanza) when StateData#state.csi_state == inactive -> send_stanza(StateData, Stanza) when StateData#state.mgmt_state == pending -> mgmt_queue_add(StateData, Stanza); send_stanza(StateData, Stanza) when StateData#state.mgmt_state == active -> - NewStateData = case send_stanza_and_ack_req(StateData, Stanza) of - ok -> - StateData; - _Error -> - StateData#state{mgmt_state = pending} - end, + NewStateData = send_stanza_and_ack_req(StateData, Stanza), mgmt_queue_add(NewStateData, Stanza); send_stanza(StateData, Stanza) -> send_element(StateData, Stanza), @@ -2830,11 +2825,12 @@ send_stanza_and_ack_req(StateData, Stanza) -> AckReq = #xmlel{name = <<"r">>, attrs = [{<<"xmlns">>, StateData#state.mgmt_xmlns}], children = []}, - case send_element(StateData, Stanza) of - ok -> - send_element(StateData, AckReq); - Error -> - Error + case send_element(StateData, Stanza) == ok andalso + send_element(StateData, AckReq) == ok of + true -> + StateData; + false -> + StateData#state{mgmt_state = pending} end. mgmt_queue_add(StateData, El) -> |