From: Anthony Minessale Date: Fri, 9 Mar 2012 17:28:29 +0000 (-0600) Subject: FS-3961 --resolve X-Git-Tag: v1.2-rc1~19^2^2~68^2~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f38c287a4bded82548bb5f25d28cd7e62dee5fe0;p=thirdparty%2Ffreeswitch.git FS-3961 --resolve --- 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);