diff options
author | Alexey Shchepin <alexey@process-one.net> | 2015-05-26 15:59:50 +0300 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2015-05-26 15:59:50 +0300 |
commit | b2f98099bbd9ce017833836ca341148035e1e10d (patch) | |
tree | 117457782289e1ff8e05a3229af53bb99d86f2f1 | |
parent | Include session record from header file instead of duplicating it (diff) | |
parent | Cosmetic change: Simplify error checking (diff) |
Merge pull request #569 from weiss/send-element-error-checking
Update send_element error checking (EJAB-1739)
-rw-r--r-- | src/ejabberd_c2s.erl | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index cd77ace29..5112db7de 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -1895,7 +1895,7 @@ send_text(StateData, Text) when StateData#state.mgmt_state == active -> case catch (StateData#state.sockmod):send(StateData#state.socket, Text) of {'EXIT', _} -> (StateData#state.sockmod):close(StateData#state.socket), - error; + {error, closed}; _ -> ok end; @@ -1916,12 +1916,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), @@ -2834,11 +2829,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) -> |