aboutsummaryrefslogtreecommitdiffstats
path: root/res/res_features.c
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-14 15:27:13 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-14 15:27:13 +0000
commit9160c285937e915eafc585bbad59be1299e61d0c (patch)
tree0deebc03b084739c0e21d820671886929be7c4fc /res/res_features.c
parent8f4ce4b31f01078b2082c727d86a909d41ce52f1 (diff)
(closes issue #10415)
Reported by: atis Revert fix for #10327 as it causes more issues then it solves. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@79397 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res/res_features.c')
-rw-r--r--res/res_features.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/res/res_features.c b/res/res_features.c
index acc966848..1d616657f 100644
--- a/res/res_features.c
+++ b/res/res_features.c
@@ -699,14 +699,18 @@ static int builtin_blindtransfer(struct ast_channel *chan, struct ast_channel *p
ast_cdr_setdestchan(transferer->cdr, transferee->name);
ast_cdr_setapp(transferer->cdr, "BLINDTRANSFER","");
}
- if (!transferee->pbx)
+ if (!transferee->pbx) {
+ /* Doh! Use our handy async_goto functions */
+ if (option_verbose > 2)
+ ast_verbose(VERBOSE_PREFIX_3 "Transferring %s to '%s' (context %s) priority 1\n"
+ ,transferee->name, xferto, transferer_real_context);
+ if (ast_async_goto(transferee, transferer_real_context, xferto, 1))
+ ast_log(LOG_WARNING, "Async goto failed :-(\n");
res = -1;
-
- if (option_verbose > 2)
- ast_verbose(VERBOSE_PREFIX_3 "Transferring %s to '%s' (context %s) priority 1\n"
- ,transferee->name, xferto, transferer_real_context);
- if (ast_async_goto(transferee, transferer_real_context, xferto, 1))
- ast_log(LOG_WARNING, "Async goto failed :-(\n");
+ } else {
+ /* Set the channel's new extension, since it exists, using transferer context */
+ set_c_e_p(transferee, transferer_real_context, xferto, 0);
+ }
check_goto_on_transfer(transferer);
return res;
} else {