Index: cdr_odbc.c =================================================================== --- cdr_odbc.c (revision 17735) +++ cdr_odbc.c (working copy) @@ -75,7 +75,7 @@ static int odbc_init(void); static SQLHENV ODBC_env = SQL_NULL_HANDLE; /* global ODBC Environment */ -static SQLHDBC ODBC_con; /* global ODBC Connection Handle */ +static SQLHDBC ODBC_con = SQL_NULL_HANDLE; /* global ODBC Connection Handle */ static SQLHSTMT ODBC_stmt; /* global ODBC Statement Handle */ static int odbc_log(struct ast_cdr *cdr) @@ -401,6 +401,12 @@ char ODBC_msg[200], ODBC_stat[10]; if (ODBC_env == SQL_NULL_HANDLE || connected == 0) { + if(ODBC_con != SQL_NULL_HANDLE) { + SQLDisconnect(ODBC_con); + SQLFreeHandle(SQL_HANDLE_DBC, ODBC_con); + ODBC_con = SQL_NULL_HANDLE; + } + ODBC_res = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &ODBC_env); if ((ODBC_res != SQL_SUCCESS) && (ODBC_res != SQL_SUCCESS_WITH_INFO)) { if (option_verbose > 10)