aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2015-05-26 15:59:50 +0300
committerAlexey Shchepin <alexey@process-one.net>2015-05-26 15:59:50 +0300
commitb2f98099bbd9ce017833836ca341148035e1e10d (patch)
tree117457782289e1ff8e05a3229af53bb99d86f2f1
parentInclude session record from header file instead of duplicating it (diff)
parentCosmetic 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.erl20
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) ->