[Home]

Summary:ASTERISK-10113: Blind Transfer broken in 1.4.10.1
Reporter:rayjay (rayjay)Labels:
Date Opened:2007-08-18 06:44:08Date Closed:2011-06-07 14:03:24
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Resources/res_features
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:Blind transfer is no longer working in 1.4.10.1 due to a change in the code of res_features.c since 1.4.9.  I am using SIP channels.  Attended transfer is unaffected.  I put back the 1.4.9 version of res_features.c and blind transfers worked correctly again, so seems to be a problem in the recent changes in this file.  Below is a diff between 1.4.9 and 1.4.10.1 with 5 lines of context.

***************
*** 697,714 ****
               }
               if (transferer->cdr) {
                       ast_cdr_setdestchan(transferer->cdr, transferee->name);
                       ast_cdr_setapp(transferer->cdr, "BLINDTRANSFER","");
               }
!               if (!transferee->pbx)
                       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");
               check_goto_on_transfer(transferer);
               return res;
       } else {
               if (option_verbose > 2)
                       ast_verbose(VERBOSE_PREFIX_3 "Unable to find extension '%s' in context '%s'\n", xferto, transferer_real_context);
--- 697,718 ----
               }
               if (transferer->cdr) {
                       ast_cdr_setdestchan(transferer->cdr, transferee->name);
                       ast_cdr_setapp(transferer->cdr, "BLINDTRANSFER","");
               }
!               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;
!               } 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 {
               if (option_verbose > 2)
                       ast_verbose(VERBOSE_PREFIX_3 "Unable to find extension '%s' in context '%s'\n", xferto, transferer_real_context);
Comments:By: Russell Brown (ruffle) 2007-08-19 06:52:42

Argh!  (just spent ages chasing this down too).  I confirm that applying
the diff restores blind transfers to their full glory (ie they work!)

By: Joshua C. Colp (jcolp) 2007-08-19 19:09:30

These changes have already been reverted in SVN and a new few for the original issue is being worked on.