From 80a93da4edbec8c576a656d0c5c4281787a4abce Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 30 Mar 2010 03:13:49 +0000 Subject: [PATCH] handle some errors on missing db handle conditions git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@17136 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- .../applications/mod_commands/mod_commands.c | 5 ++- .../applications/mod_dptools/mod_dptools.c | 4 ++- src/mod/formats/mod_shout/mod_shout.c | 4 ++- src/switch_console.c | 35 +++++++++++++++---- 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 78fed4bad0..0f3bc01160 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -3232,7 +3232,10 @@ SWITCH_STANDARD_API(show_function) switch_core_flag_t cflags = switch_core_flags(); switch_status_t status = SWITCH_STATUS_SUCCESS; - switch_core_db_handle(&db); + if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) { + stream->write_function(stream, "%s", "-ERR Databse Error!\n"); + return SWITCH_STATUS_SUCCESS; + } holder.justcount = 0; diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 0dcd869fc2..9990871df3 100644 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -358,7 +358,9 @@ SWITCH_STANDARD_APP(eavesdrop_function) char terminator; switch_status_t status; - switch_core_db_handle(&db); + if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Database Error!\n"); + } while (switch_channel_ready(channel)) { for (x = 0; x < MAX_SPY; x++) { diff --git a/src/mod/formats/mod_shout/mod_shout.c b/src/mod/formats/mod_shout/mod_shout.c index 1eef2e42d3..61a4211ea1 100644 --- a/src/mod/formats/mod_shout/mod_shout.c +++ b/src/mod/formats/mod_shout/mod_shout.c @@ -1356,7 +1356,9 @@ void do_index(switch_stream_handle_t *stream) struct holder holder; char *errmsg; - switch_core_db_handle(&db); + if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) { + return; + } holder.host = switch_event_get_header(stream->param_event, "http-host"); holder.port = switch_event_get_header(stream->param_event, "http-port"); diff --git a/src/switch_console.c b/src/switch_console.c index 7879664aa3..68f7df3575 100644 --- a/src/switch_console.c +++ b/src/switch_console.c @@ -240,8 +240,11 @@ SWITCH_DECLARE(char *) switch_console_expand_alias(char *cmd, char *arg) switch_cache_db_handle_t *db = NULL; int full = 0; - - switch_core_db_handle(&db); + + if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Database Error\n"); + return NULL; + } if (db->type == SCDB_TYPE_CORE_DB) { @@ -563,7 +566,11 @@ SWITCH_DECLARE(switch_status_t) switch_console_list_uuid(const char *line, const switch_status_t status = SWITCH_STATUS_FALSE; char *errmsg; - switch_core_db_handle(&db); + + if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Database Error\n"); + return SWITCH_STATUS_GENERR; + } if (!zstr(cursor)) { sql = switch_mprintf("select distinct uuid from channels where uuid like '%q%%' and hostname='%q' order by uuid", @@ -609,7 +616,10 @@ SWITCH_DECLARE(unsigned char) switch_console_complete(const char *line, const ch #endif #endif - switch_core_db_handle(&db); + if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Database Error\n"); + return CC_ERROR; + } if (!zstr(cursor) && !zstr(line)) { pos = (cursor - line); @@ -1688,7 +1698,14 @@ SWITCH_DECLARE(switch_status_t) switch_console_set_complete(const char *string) switch_stream_handle_t mystream = { 0 }; SWITCH_STANDARD_STREAM(mystream); - switch_core_db_handle(&db); + + if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Database Error\n"); + free(mystream.data); + free(mydata); + return SWITCH_STATUS_FALSE; + } + if (!strcasecmp(argv[0], "stickyadd")) { mystream.write_function(&mystream, "insert into complete values (1,"); @@ -1765,8 +1782,12 @@ SWITCH_DECLARE(switch_status_t) switch_console_set_alias(const char *string) switch_cache_db_handle_t *db = NULL; char *sql = NULL; - switch_core_db_handle(&db); - + if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Database Error\n"); + free(mydata); + return SWITCH_STATUS_FALSE; + } + if (!strcasecmp(argv[0], "stickyadd") && argc == 3) { sql = switch_mprintf("delete from aliases where alias='%q' and hostname='%q'", argv[1], switch_core_get_variable("hostname")); switch_cache_db_persistant_execute(db, sql, 5);