aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2010-03-04 12:36:57 +0900
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2010-03-04 12:36:57 +0900
commit31c3a784533634e9ffc27152bb069c2a04c92bfe (patch)
tree8121180d4548b2efcb58034b78da01200c54cc04 /src
parentRemove print debug (thanks evgeniy) (diff)
improved s2s connections clean up (EJAB-1202)
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" ->