]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix issue where an attended transfer could not be completed under a rare scenario.
authorJoshua Colp <jcolp@digium.com>
Wed, 11 Mar 2009 17:22:52 +0000 (17:22 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 11 Mar 2009 17:22:52 +0000 (17:22 +0000)
When completing an attended transfer chan_sip does a check to make sure the extension
in the URI portion of the Refer-To header is a local valid extension. We don't actually
need to check this since we know for sure the other channel is already up and talking to
the extension. Some devices do not put the extension in the Refer-To header either, which
can cause the extension check to fail. We now no longer do this check if it is an attended
transfer.

(closes issue #14628)
Reported by: sverre
Patches:
      14628.diff uploaded by file (license 11)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@181328 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 802a31ce3c939ec9fe161d6d5ae221b123389e62..d70d19732317465a54dbc3a916ff5c981974cd3c 100644 (file)
@@ -9425,7 +9425,7 @@ static int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoi
        ast_copy_string(referdata->refer_to_context, transfer_context, sizeof(referdata->refer_to_context));
        
        /* Either an existing extension or the parking extension */
-       if (ast_exists_extension(NULL, transfer_context, refer_to, 1, NULL) ) {
+       if (referdata->attendedtransfer || ast_exists_extension(NULL, transfer_context, refer_to, 1, NULL) ) {
                if (sip_debug_test_pvt(transferer)) {
                        ast_verbose("SIP transfer to extension %s@%s by %s\n", refer_to, transfer_context, referred_by_uri);
                }