aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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) ->