diff --git a/pbx.c b/pbx.c index 4cb4ea52f6c47e588b95f3eef2fac749d008f59f..032ff480a1dc087e45cc528456b56baa513ca073 100644 --- a/pbx.c +++ b/pbx.c @@ -2417,29 +2417,15 @@ static struct ast_context *find_context_locked(const char *context) */ int ast_context_remove_include(const char *context, const char *include, const char *registrar) { - struct ast_context *c = NULL; - - if (ast_lock_contexts()) - return -1; - - /* walk contexts and search for the right one ...*/ - while ( (c = ast_walk_contexts(c)) ) { - /* we found one ... */ - if (!strcmp(ast_get_context_name(c), context)) { - int ret; - /* remove include from this context ... */ - ret = ast_context_remove_include2(c, include, registrar); - - ast_unlock_contexts(); + int ret = -1; + struct ast_context *c = find_context_locked(context); - /* ... return results */ - return ret; - } + if (c) { + /* found, remove include from this context ... */ + ret = ast_context_remove_include2(c, include, registrar); + ast_unlock_contexts(); } - - /* we can't find the right one context */ - ast_unlock_contexts(); - return -1; + return ret; } /* @@ -5101,10 +5087,7 @@ static int pbx_builtin_resetcdr(struct ast_channel *chan, void *data) static int pbx_builtin_setamaflags(struct ast_channel *chan, void *data) { /* Copy the AMA Flags as specified */ - if (data) - ast_cdr_setamaflags(chan, data); - else - ast_cdr_setamaflags(chan, ""); + ast_cdr_setamaflags(chan, data ? data : ""); return 0; } @@ -5359,7 +5342,7 @@ static int pbx_builtin_background(struct ast_channel *chan, void *data) */ static int pbx_builtin_goto(struct ast_channel *chan, void *data) { - int res = ast_parseable_goto(chan, (const char *) data); + int res = ast_parseable_goto(chan, data); if (!res && (option_verbose > 2)) ast_verbose( VERBOSE_PREFIX_3 "Goto (%s,%s,%d)\n", chan->context,chan->exten, chan->priority+1); return res; @@ -5601,7 +5584,7 @@ int pbx_checkcondition(char *condition) return 0; else if (*condition >= '0' && *condition <= '9') /* Numbers are evaluated for truth */ return atoi(condition); - else /* Strings are true */ + else /* Strings are true -- XXX maybe use ast_true() ? */ return 1; } @@ -5609,7 +5592,7 @@ static int pbx_builtin_gotoif(struct ast_channel *chan, void *data) { char *condition, *branch1, *branch2, *branch; int rc; - char *stringp=NULL; + char *stringp; if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "Ignoring, since there is no variable to check\n"); @@ -5900,12 +5883,14 @@ static int __ast_goto_if_exists(struct ast_channel *chan, const char *context, c if (!chan) return -2; + if (context == NULL) + context = chan->context; + if (exten == NULL) + exten = chan->exten; + goto_func = (async) ? ast_async_goto : ast_explicit_goto; - if (ast_exists_extension(chan, context ? context : chan->context, - exten ? exten : chan->exten, priority, - chan->cid.cid_num)) - return goto_func(chan, context ? context : chan->context, - exten ? exten : chan->exten, priority); + if (ast_exists_extension(chan, context, exten, priority, chan->cid.cid_num)) + return goto_func(chan, context, exten, priority); else return -3; }