diff options
author | root <root@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-05-21 16:06:29 +0000 |
---|---|---|
committer | root <root@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-05-21 16:06:29 +0000 |
commit | acca6194fe359f36ddd3e1eb76166c8e7248a311 (patch) | |
tree | 3813304bf73faedc3e45dea78b9f1b71a626cdce /res | |
parent | e0b8e35cf317d7bd383a3f1a3c55f274037b1587 (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.c | 13 |
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; |