Merged revisions 77778 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Mon, 30 Jul 2007 17:12:58 +0000 (17:12 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 30 Jul 2007 17:12:58 +0000 (17:12 +0000)
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

index ef8e81b..610fffa 100644 (file)
@@ -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 {