don't segfault

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14961 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Brian West 2009-09-23 23:59:35 +00:00
parent 113c45bf4b
commit 1a3d56ce62
1 changed files with 18 additions and 6 deletions

View File

@ -1533,21 +1533,33 @@ SWITCH_STANDARD_API(kill_function)
SWITCH_STANDARD_API(preprocess_function)
{
switch_core_session_t *ksession = NULL;
char *mycmd = NULL;
char *mycmd = NULL, *argv[3] = { 0 };
int argc = 0;
if (switch_strlen_zero(cmd)) {
stream->write_function(stream, "-USAGE: %s\n", KILL_SYNTAX);
return SWITCH_STATUS_SUCCESS;
if (switch_strlen_zero(cmd) || !(mycmd = strdup(cmd))) {
goto usage;
}
if (!(ksession = switch_core_session_locate(cmd))) {
argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
if (argc < 2) {
goto usage;
}
if (!(ksession = switch_core_session_locate(argv[0]))) {
stream->write_function(stream, "-ERR No Such Channel!\n");
goto done;
} else {
switch_ivr_preprocess_session(session, (char *)cmd);
switch_ivr_preprocess_session(ksession, (char *)argv[1]);
switch_core_session_rwunlock(ksession);
stream->write_function(stream, "+OK\n");
goto done;
}
usage:
stream->write_function(stream, "-USAGE: %s\n", PREPROCESS_SYNTAX);
done:
switch_safe_free(mycmd);
return SWITCH_STATUS_SUCCESS;
}