[asterisk-commits] tilghman: trunk r267669 - /trunk/funcs/func_odbc.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Jun 3 14:46:49 CDT 2010
Author: tilghman
Date: Thu Jun 3 14:46:42 2010
New Revision: 267669
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=267669
Log:
Handle OOM errors more gracefully.
(closes issue #17084)
Reported by: falves11
Patches:
issue17084_162_A.diff uploaded by falves11 (license 374)
Tested by: falves11
Modified:
trunk/funcs/func_odbc.c
Modified: trunk/funcs/func_odbc.c
URL: http://svnview.digium.com/svn/asterisk/trunk/funcs/func_odbc.c?view=diff&rev=267669&r1=267668&r2=267669
==============================================================================
--- trunk/funcs/func_odbc.c (original)
+++ trunk/funcs/func_odbc.c Thu Jun 3 14:46:42 2010
@@ -221,7 +221,7 @@
struct ast_str *insertbuf = ast_str_thread_get(&sql2_buf, 16);
const char *status = "FAILURE";
- if (!buf) {
+ if (!buf || !insertbuf) {
return -1;
}
@@ -406,7 +406,7 @@
struct ast_str *sql = ast_str_thread_get(&sql_buf, 16);
const char *status = "FAILURE";
- if (!sql) {
+ if (!sql || !colnames) {
if (chan) {
pbx_builtin_setvar_helper(chan, "ODBCSTATUS", status);
}
@@ -566,6 +566,21 @@
int i;
struct ast_str *coldata = ast_str_thread_get(&coldata_buf, 16);
char *ptrcoldata;
+
+ if (!coldata) {
+ ast_free(resultset);
+ SQLCloseCursor(stmt);
+ SQLFreeHandle(SQL_HANDLE_STMT, stmt);
+ ast_odbc_release_obj(obj);
+ obj = NULL;
+ pbx_builtin_setvar_helper(chan, "ODBCSTATUS", "MEMERROR");
+ if (chan)
+ ast_autoservice_stop(chan);
+ if (bogus_chan) {
+ ast_channel_release(chan);
+ }
+ return -1;
+ }
if (y == 0) {
char colname[256];
@@ -1126,6 +1141,11 @@
char colname[256];
SQLULEN maxcol;
+ if (!coldata) {
+ AST_RWLIST_UNLOCK(&queries);
+ return CLI_SUCCESS;
+ }
+
for (dsn = 0; dsn < 5; dsn++) {
if (ast_strlen_zero(query->readhandle[dsn])) {
continue;
More information about the asterisk-commits
mailing list