aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/res_odbc.c18
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);
}
}