]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
automerge commit
authorAutomerge script <automerge@asterisk.org>
Sun, 21 May 2006 16:06:29 +0000 (16:06 +0000)
committerAutomerge script <automerge@asterisk.org>
Sun, 21 May 2006 16:06:29 +0000 (16:06 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@29233 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_features.c

index f83cadeccf3a0504544a5824c62fbe2cc74f73f2..eaae5816da951b5917bd5fa727ad6d3bc40d3ff0 100644 (file)
@@ -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;