diff options
-rw-r--r-- | res/res_odbc.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/res/res_odbc.c b/res/res_odbc.c index 961e30044..9a86f401d 100644 --- a/res/res_odbc.c +++ b/res/res_odbc.c @@ -110,26 +110,20 @@ SQLHSTMT ast_odbc_prepare_and_execute(struct odbc_obj *obj, SQLHSTMT (*prepare_c } } - ast_log(LOG_WARNING, "SQL Execute error %d! Attempting a reconnect...\n", res); + ast_log(LOG_WARNING, "SQL Execute error %d! Verifying connection to %s [%s]...\n", res, obj->parent->name, obj->parent->dsn); SQLFreeHandle(SQL_HANDLE_STMT, stmt); stmt = NULL; - obj->up = 0; - /* - * While this isn't the best way to try to correct an error, this won't automatically - * fail when the statement handle invalidates. - */ - /* XXX Actually, it might, if we're using a non-pooled connection. Possible race here. XXX */ - odbc_obj_disconnect(obj); - odbc_obj_connect(obj); + if (!ast_odbc_sanity_check(obj)) { + break; + } continue; } else obj->last_used = ast_tvnow(); break; } else { - ast_log(LOG_WARNING, "SQL Prepare failed. Attempting a reconnect...\n"); - odbc_obj_disconnect(obj); - odbc_obj_connect(obj); + ast_log(LOG_WARNING, "SQL Prepare failed. Verifying connection to %s [%s]\n", obj->parent->name, obj->parent->dsn); + ast_odbc_sanity_check(obj); } } |