[commit] r10347 - freeswitch/trunk/src/mod/applications/mod_commands
Author: mikej Date: Wed Nov 12 06:46:44 2008 New Revision: 10347 Log: (FSCORE-217) Add support for passing the cause of hangup to the uuid_kill command Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c (original) +++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c Wed Nov 12 06:46:44 2008 @@ -921,26 +921,39 @@ return SWITCH_STATUS_SUCCESS; } -#define KILL_SYNTAX "<uuid>" +#define KILL_SYNTAX "<uuid> [cause]" SWITCH_STANDARD_API(kill_function) { switch_core_session_t *ksession = NULL; + char *mycmd = NULL, *kcause = NULL; + switch_call_cause_t cause = SWITCH_CAUSE_NORMAL_CLEARING; if (session) { return SWITCH_STATUS_FALSE; } - if (!cmd) { + if (switch_strlen_zero(cmd) || !(mycmd = strdup(cmd))) { stream->write_function(stream, "-USAGE: %s\n", KILL_SYNTAX); - } else if ((ksession = switch_core_session_locate(cmd))) { + return SWITCH_STATUS_SUCCESS; + } + + if ((kcause = strchr(mycmd, ' '))) { + *kcause++ = '\0'; + } + + if (switch_strlen_zero(mycmd) || !(ksession = switch_core_session_locate(mycmd))) { + stream->write_function(stream, "-ERR No Such Channel!\n"); + } else { switch_channel_t *channel = switch_core_session_get_channel(ksession); - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + if (!switch_strlen_zero(kcause)){ + cause = switch_channel_str2cause(kcause); + } + switch_channel_hangup(channel, cause); switch_core_session_rwunlock(ksession); stream->write_function(stream, "+OK\n"); - } else { - stream->write_function(stream, "-ERR No Such Channel!\n"); } + switch_safe_free(mycmd); return SWITCH_STATUS_SUCCESS; }
participants (1)
-
FreeSWITCH SVN