From: Anthony Minessale Date: Tue, 21 Oct 2008 17:41:55 +0000 (+0000) Subject: add all modifier to break command X-Git-Tag: v1.0.2~747 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa266f53499da58469430b676364c4bbe7984d69;p=thirdparty%2Ffreeswitch.git add all modifier to break command git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10093 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 46070d45f7..9671c569a4 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -1604,11 +1604,12 @@ SWITCH_STANDARD_API(session_displace_function) return SWITCH_STATUS_SUCCESS; } -#define BREAK_SYNTAX "" +#define BREAK_SYNTAX " [all]" SWITCH_STANDARD_API(break_function) { switch_core_session_t *psession = NULL; - + char *mycmd, *flag; + if (session) { return SWITCH_STATUS_FALSE; } @@ -1618,11 +1619,22 @@ SWITCH_STANDARD_API(break_function) return SWITCH_STATUS_SUCCESS; } - if (!(psession = switch_core_session_locate(cmd))) { + mycmd = strdup(cmd); + switch_assert(mycmd); + + if ((flag = strchr(mycmd, ' '))) { + *flag++ = '\0'; + } + + if (!(psession = switch_core_session_locate(mycmd))) { stream->write_function(stream, "-ERR No Such Channel!\n"); return SWITCH_STATUS_SUCCESS; } + if (flag && !strcasecmp(flag, "all")) { + switch_core_session_flush_private_events(session); + } + switch_channel_set_flag(switch_core_session_get_channel(psession), CF_BREAK); switch_core_session_rwunlock(psession);