From f38c287a4bded82548bb5f25d28cd7e62dee5fe0 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 9 Mar 2012 11:28:29 -0600 Subject: [PATCH] FS-3961 --resolve --- src/mod/languages/mod_lua/freeswitch_lua.cpp | 13 +++++++------ src/switch_core_sqldb.c | 13 +++++++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/mod/languages/mod_lua/freeswitch_lua.cpp b/src/mod/languages/mod_lua/freeswitch_lua.cpp index 4af4e380e7..96897a24c9 100644 --- a/src/mod/languages/mod_lua/freeswitch_lua.cpp +++ b/src/mod/languages/mod_lua/freeswitch_lua.cpp @@ -385,6 +385,7 @@ bool Dbh::test_reactive(char *test_sql, char *drop_sql, char *reactive_sql) int Dbh::query_callback(void *pArg, int argc, char **argv, char **cargv) { SWIGLUA_FN *lua_fun = (SWIGLUA_FN *)pArg; + int ret = 0; lua_pushvalue(lua_fun->L, lua_fun->idx); /* get the lua callback function onto the stack */ @@ -396,13 +397,13 @@ int Dbh::query_callback(void *pArg, int argc, char **argv, char **cargv) lua_settable(lua_fun->L, -3); } - docall(lua_fun->L, 1, 1, 1); /* 1 in, 1 out */ + docall(lua_fun->L, 1, 0, 1); + ret = lua_tonumber(lua_fun->L, -1); + lua_pop(lua_fun->L, 1); - if (lua_isnumber(lua_fun->L, -1)) { - if (lua_tonumber(lua_fun->L, -1) != 0) { - return 1; - } - } + if (ret != 0) { + return 1; + } return 0; /* 0 to continue with next row */ } diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index 172cf6572b..0082b7b4ef 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -466,7 +466,12 @@ static switch_status_t switch_cache_db_execute_sql_real(switch_cache_db_handle_t break; case SCDB_TYPE_CORE_DB: { - status = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, NULL, NULL, &errmsg); + int ret = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, NULL, NULL, &errmsg); + + if (ret == SWITCH_CORE_DB_OK) { + status = SWITCH_STATUS_SUCCESS; + } + if (errmsg) { switch_strdup(tmp, errmsg); switch_core_db_free(errmsg); @@ -832,7 +837,11 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_execute_sql_callback(switch_cach break; case SCDB_TYPE_CORE_DB: { - status = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, callback, pdata, &errmsg); + int ret = switch_core_db_exec(dbh->native_handle.core_db_dbh, sql, callback, pdata, &errmsg); + + if (ret == SWITCH_CORE_DB_OK || ret == SWITCH_CORE_DB_ABORT) { + status = SWITCH_STATUS_SUCCESS; + } if (errmsg) { dbh->last_used = switch_epoch_time_now(NULL) - (SQL_CACHE_TIMEOUT * 2);