aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_sql.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_sql.erl')
-rw-r--r--src/ejabberd_sql.erl17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/ejabberd_sql.erl b/src/ejabberd_sql.erl
index d085d3ee4..92642e7b7 100644
--- a/src/ejabberd_sql.erl
+++ b/src/ejabberd_sql.erl
@@ -141,8 +141,8 @@ sql_call(Host, Msg) ->
Timeout = query_timeout(Host),
case get(?STATE_KEY) of
undefined ->
- Proc = get_worker(Host),
- sync_send_event(Proc, {sql_cmd, Msg, current_time() + Timeout},
+ sync_send_event(Host,
+ {sql_cmd, Msg, current_time() + Timeout},
Timeout);
_State ->
nested_op(Msg)
@@ -161,6 +161,14 @@ keep_alive(Host, Proc) ->
sync_send_event(Proc, force_timeout, Timeout)
end.
+sync_send_event(Host, Msg, Timeout) when is_binary(Host) ->
+ case ejabberd_sql_sup:start(Host) of
+ ok ->
+ Proc = get_worker(Host),
+ sync_send_event(Proc, Msg, Timeout);
+ {error, _} = Err ->
+ Err
+ end;
sync_send_event(Proc, Msg, Timeout) ->
try p1_fsm:sync_send_event(Proc, Msg, Timeout)
catch _:{Reason, {p1_fsm, _, _}} ->
@@ -993,10 +1001,7 @@ log(Level, Format, Args) ->
end.
db_opts(Host) ->
- Type = case ejabberd_option:sql_type(Host) of
- undefined -> odbc;
- T -> T
- end,
+ Type = ejabberd_option:sql_type(Host),
Server = ejabberd_option:sql_server(Host),
Timeout = ejabberd_option:sql_connect_timeout(Host),
Transport = case ejabberd_option:sql_ssl(Host) of