From 9d2d0e3896823a16a68844d06fda0f76fce94c2a Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Mon, 30 Jul 2007 17:12:58 +0000 Subject: [PATCH] Merged revisions 77778 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r77778 | file | 2007-07-30 14:11:02 -0300 (Mon, 30 Jul 2007) | 4 lines (closes issue #10327) Reported by: kkiely Instead of directly mucking with the extension/context/priority of the channel we are transferring when it has a PBX simply call ast_async_goto on it. This will ensure that the channel gets handled properly and sent to the right place. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77779 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/res_features.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/res/res_features.c b/res/res_features.c index ef8e81b69f..610fffa99c 100644 --- a/res/res_features.c +++ b/res/res_features.c @@ -736,17 +736,15 @@ 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) { - /* Doh! Use our handy async_goto functions */ - ast_verb(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"); + + if (!transferee->pbx) res = -1; - } else { - /* Set the channel's new extension, since it exists, using transferer context */ - set_c_e_p(transferee, transferer_real_context, xferto, 0); - } + + /* Doh! Use our handy async_goto functions */ + ast_verb(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"); check_goto_on_transfer(transferer); return res; } else {