aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_s2s_out.erl54
1 files changed, 30 insertions, 24 deletions
diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl
index 073c79962..ac7eee21d 100644
--- a/src/ejabberd_s2s_out.erl
+++ b/src/ejabberd_s2s_out.erl
@@ -952,30 +952,36 @@ send_db_request(StateData) ->
Key ->
Key
end,
- case New of
- false ->
- ok;
- Key1 ->
- send_element(StateData,
- {xmlelement,
- "db:result",
- [{"from", StateData#state.myname},
- {"to", Server}],
- [{xmlcdata, Key1}]})
- end,
- case StateData#state.verify of
- false ->
- ok;
- {_Pid, Key2, SID} ->
- send_element(StateData,
- {xmlelement,
- "db:verify",
- [{"from", StateData#state.myname},
- {"to", StateData#state.server},
- {"id", SID}],
- [{xmlcdata, Key2}]})
- end,
- {next_state, wait_for_validation, StateData#state{new = New}, ?FSMTIMEOUT*6}.
+ NewStateData = StateData#state{new = New},
+ try
+ case New of
+ false ->
+ ok;
+ Key1 ->
+ send_element(StateData,
+ {xmlelement,
+ "db:result",
+ [{"from", StateData#state.myname},
+ {"to", Server}],
+ [{xmlcdata, Key1}]})
+ end,
+ case StateData#state.verify of
+ false ->
+ ok;
+ {_Pid, Key2, SID} ->
+ send_element(StateData,
+ {xmlelement,
+ "db:verify",
+ [{"from", StateData#state.myname},
+ {"to", StateData#state.server},
+ {"id", SID}],
+ [{xmlcdata, Key2}]})
+ end,
+ {next_state, wait_for_validation, NewStateData, ?FSMTIMEOUT*6}
+ catch
+ _:_ ->
+ {stop, normal, NewStateData}
+ end.
is_verify_res({xmlelement, Name, Attrs, _Els}) when Name == "db:result" ->