diff --git a/ChangeLog b/ChangeLog index a39546fac..4cb1c8f4e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-12-22 Mickael Remond + + * src/odbc/ejabberd_odbc.erl: Added error message on ODBC + connection to help ODBC configuration troubleshooting. + 2005-12-22 Alexey Shchepin * src/odbc/ejabberd_odbc.erl: Bugfix diff --git a/src/odbc/ejabberd_odbc.erl b/src/odbc/ejabberd_odbc.erl index e48d1e201..473446782 100644 --- a/src/odbc/ejabberd_odbc.erl +++ b/src/odbc/ejabberd_odbc.erl @@ -27,6 +27,8 @@ handle_info/2, terminate/2]). +-include("ejabberd.hrl"). + -record(state, {db_ref, db_type}). -define(STATE_KEY, ejabberd_odbc_state). @@ -112,14 +114,22 @@ init([Host]) -> SQLServer = ejabberd_config:get_local_option({odbc_server, Host}), case SQLServer of {pgsql, Server, DB, Username, Password} -> - {ok, Ref} = pgsql:connect(Server, DB, Username, Password), - {ok, #state{db_ref = Ref, - db_type = pgsql}}; + case pgsql:connect(Server, DB, Username, Password) of + {ok, Ref} -> + {ok, #state{db_ref = Ref, db_type = pgsql}}; + {error, Reason} -> + ?ERROR_MSG("PostgreSQL connection failed: ~p~n", [Reason]), + {stop, pgsql_connection_failed} + end; _ when is_list(SQLServer) -> - {ok, Ref} = odbc:connect(SQLServer, - [{scrollable_cursors, off}]), - {ok, #state{db_ref = Ref, - db_type = odbc}} + case odbc:connect(SQLServer,[{scrollable_cursors, off}]) of + {ok, Ref} -> + {ok, #state{db_ref = Ref, db_type = odbc}}; + {error, Reason} -> + ?ERROR_MSG("ODBC connection (~s) failed: ~p~n", + [SQLServer, Reason]), + {stop, odbc_connection_failed} + end end. %%----------------------------------------------------------------------