aboutsummaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
authorroot <root@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-21 16:06:29 +0000
committerroot <root@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-21 16:06:29 +0000
commitacca6194fe359f36ddd3e1eb76166c8e7248a311 (patch)
tree3813304bf73faedc3e45dea78b9f1b71a626cdce /res
parente0b8e35cf317d7bd383a3f1a3c55f274037b1587 (diff)
automerge commit
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2-netsec@29233 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r--res/res_features.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/res/res_features.c b/res/res_features.c
index f83cadecc..eaae5816d 100644
--- a/res/res_features.c
+++ b/res/res_features.c
@@ -944,8 +944,12 @@ static int feature_exec_app(struct ast_channel *chan, struct ast_channel *peer,
if (ast_test_flag(feature, AST_FEATURE_FLAG_CALLEE))
work = peer;
res = pbx_exec(work, app, feature->app_args, 1);
- if (res < 0)
- return res;
+ if (res == AST_PBX_KEEPALIVE)
+ return FEATURE_RETURN_PBX_KEEPALIVE;
+ else if (res == AST_PBX_NO_HANGUP_PEER)
+ return FEATURE_RETURN_NO_HANGUP_PEER;
+ else if (res)
+ return FEATURE_RETURN_SUCCESSBREAK;
} else {
ast_log(LOG_WARNING, "Could not find application (%s)\n", feature->app);
return -2;
@@ -1021,7 +1025,10 @@ static int ast_feature_interpret(struct ast_channel *chan, struct ast_channel *p
if (!strcmp(feature->exten, code)) {
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 " Feature Found: %s exten: %s\n",feature->sname, tok);
- res = feature->operation(chan, peer, config, code, sense);
+ if (sense == FEATURE_SENSE_CHAN)
+ res = feature->operation(chan, peer, config, code, sense);
+ else
+ res = feature->operation(peer, chan, config, code, sense);
break;
} else if (!strncmp(feature->exten, code, strlen(code))) {
res = FEATURE_RETURN_STOREDIGITS;