From 4dadffda0001f768e103482a218202f9e4a000c6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 22 Aug 2008 19:00:56 +0000 Subject: [PATCH] update git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9355 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_types.h | 3 ++- src/switch.c | 6 ++++++ src/switch_loadable_module.c | 5 +++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 3c0d842094..823bb82dc2 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -206,7 +206,8 @@ typedef enum { SCF_USE_SQL = (1 << 0), SCF_NO_NEW_SESSIONS = (1 << 1), SCF_SHUTTING_DOWN = (1 << 2), - SCF_CRASH_PROT = (1 << 3) + SCF_CRASH_PROT = (1 << 3), + SCF_VG = (1 << 4) } switch_core_flag_enum_t; typedef uint32_t switch_core_flag_t; diff --git a/src/switch.c b/src/switch.c index 9a6f8cfa84..f5adc2e3af 100644 --- a/src/switch.c +++ b/src/switch.c @@ -236,6 +236,7 @@ int main(int argc, char *argv[]) "\t-core -- dump cores\n" #endif "\t-hp -- enable high priority settings\n" + "\t-vg -- run under valgrind\n" "\t-nosql -- disable internal sql scoreboard\n" "\t-stop -- stop freeswitch\n" "\t-nc -- do not output to a console and background\n" @@ -387,6 +388,11 @@ int main(int argc, char *argv[]) known_opt++; } + if (argv[x] && !strcmp(argv[x], "-vg")) { + flags |= SCF_VG; + known_opt++; + } + if (argv[x] && !strcmp(argv[x], "-stop")) { die++; known_opt++; diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index aba41f40e7..cd0bd04933 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -1109,8 +1109,9 @@ SWITCH_DECLARE(switch_status_t) switch_loadable_module_init() static void do_shutdown(switch_loadable_module_t *module, switch_bool_t shutdown, switch_bool_t unload) { + int32_t flags = switch_core_flags(); switch_assert(module != NULL); - + if (shutdown) { switch_loadable_module_unprocess(module); if (module->switch_module_shutdown) { @@ -1121,7 +1122,7 @@ static void do_shutdown(switch_loadable_module_t *module, switch_bool_t shutdown } } - if (unload && module->status != SWITCH_STATUS_NOUNLOAD) { + if (unload && module->status != SWITCH_STATUS_NOUNLOAD && !(flags & SCF_VG)) { switch_memory_pool_t *pool; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "%s unloaded.\n", module->module_interface->module_name); switch_dso_unload(module->lib);