diff --git a/src/include/switch_types.h b/src/include/switch_types.h index dd36b7f680..2e3fd3982c 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -276,7 +276,8 @@ typedef enum { SCF_USE_WIN32_MONOTONIC = (1 << 12), SCF_AUTO_SCHEMAS = (1 << 13), SCF_MINIMAL = (1 << 14), - SCF_USE_NAT_MAPPING = (1 << 15) + SCF_USE_NAT_MAPPING = (1 << 15), + SCF_CLEAR_SQL = (1 << 16) } switch_core_flag_enum_t; typedef uint32_t switch_core_flag_t; diff --git a/src/switch_core.c b/src/switch_core.c index 12850ce998..0b193ba5fa 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1358,6 +1358,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_init(switch_core_flag_t flags, switc runtime.dummy_cng_frame.buflen = sizeof(runtime.dummy_data); switch_set_flag((&runtime.dummy_cng_frame), SFF_CNG); switch_set_flag((&runtime), SCF_AUTO_SCHEMAS); + switch_set_flag((&runtime), SCF_CLEAR_SQL); switch_set_flag((&runtime), SCF_NO_NEW_SESSIONS); runtime.hard_log_level = SWITCH_LOG_DEBUG; @@ -1675,6 +1676,12 @@ static void switch_load_core_config(const char *file) } else { switch_clear_flag((&runtime), SCF_AUTO_SCHEMAS); } + } else if (!strcasecmp(var, "auto-clear-sql")) { + if (switch_true(val)) { + switch_set_flag((&runtime), SCF_CLEAR_SQL); + } else { + switch_clear_flag((&runtime), SCF_CLEAR_SQL); + } } else if (!strcasecmp(var, "enable-early-hangup") && switch_true(val)) { switch_set_flag((&runtime), SCF_EARLY_HANGUP); } else if (!strcasecmp(var, "colorize-console") && switch_true(val)) { diff --git a/src/switch_core_db.c b/src/switch_core_db.c index 475bcfd649..3c20b0f368 100644 --- a/src/switch_core_db.c +++ b/src/switch_core_db.c @@ -214,6 +214,10 @@ SWITCH_DECLARE(void) switch_core_db_test_reactive(switch_core_db_t *db, char *te { char *errmsg; + if (!switch_test_flag((&runtime), SCF_CLEAR_SQL)) { + return; + } + if (!switch_test_flag((&runtime), SCF_AUTO_SCHEMAS)) { switch_core_db_exec(db, test_sql, NULL, NULL, NULL); return; diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index 798e7c288f..665b496c01 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -852,6 +852,10 @@ SWITCH_DECLARE(switch_bool_t) switch_cache_db_test_reactive(switch_cache_db_hand switch_bool_t r = SWITCH_TRUE; switch_mutex_t *io_mutex = dbh->io_mutex; + if (!switch_test_flag((&runtime), SCF_CLEAR_SQL)) { + return SWITCH_TRUE; + } + if (!switch_test_flag((&runtime), SCF_AUTO_SCHEMAS)) { switch_cache_db_execute_sql(dbh, (char *)test_sql, NULL); return SWITCH_TRUE; @@ -1894,7 +1898,7 @@ switch_status_t switch_core_sqldb_start(switch_memory_pool_t *pool, switch_bool_ switch (dbh->type) { case SCDB_TYPE_ODBC: - { + if (switch_test_flag((&runtime), SCF_CLEAR_SQL)) { char sql[512] = ""; char *tables[] = { "channels", "calls", "interfaces", "tasks", NULL }; int i;