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;
"\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"
known_opt++;
}
+ if (argv[x] && !strcmp(argv[x], "-vg")) {
+ flags |= SCF_VG;
+ known_opt++;
+ }
+
if (argv[x] && !strcmp(argv[x], "-stop")) {
die++;
known_opt++;
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) {
}
}
- 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);