]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Made Dial d and H options no longer immediately auto-answer the calling leg.
authorRichard Mudgett <rmudgett@digium.com>
Mon, 19 Sep 2011 18:46:40 +0000 (18:46 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 19 Sep 2011 18:46:40 +0000 (18:46 +0000)
The Dial d and H options break DTMF attended transfer atxferdropcall
option.

1) Party A calls party B.
2) Party B does a DTMF attended transfer to Party C.

If the dialplan uses the Dial d or H options to call Party C then the Dial
application answers the call immediately before initiating the call leg to
Party C.  The premature answer causes the transfer code to not invoke the
atxferdropcall=no behavior for a blonde transfer since Party C has
"answered".  The transfer code thinks that Party B has "consulted" with
Party C when Party B hangs up and completes the transfer to Party A.
Party A now hears ringback until Party C actually answers.

ASTERISK-13294 Dial d option.
ASTERISK-11067 Dial H option to disconnect before answer.

The referenced issues made Dial answer with the d and H options because
many SIP and ISDN phones cannot send DTMF before the call is connected.

* Made require the dialplan to control when or if the call needs to be
answered to use the Dial application d and H options.  (The call is no
longer surprise answered when using the Dial d or H options.)

Review: https://reviewboard.asterisk.org/r/1381/

JIRA AST-623
JIRA AST-666

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

UPGRADE.txt
apps/app_dial.c

index c2a7bd0961f371a29136696e78084034af92a186..c7258aa7c6db229a0ac3196c3cb58476762d8327 100644 (file)
@@ -147,6 +147,12 @@ From 1.6.2 to 1.8:
   events/responses output the connected line ID as caller ID.  These party ID's
   are now separate.
 
+* The Dial application d and H options do not automatically answer the call
+  anymore.  It broke DTMF attended transfers.  Since many SIP and ISDN phones
+  cannot send DTMF before a call is connected, you need to answer the call
+  leg to those phones before using Dial with these options for them to have
+  any effect before the dialed party answers.
+
 * The outgoing directory (where .call files are read) now uses inotify to
   detect file changes instead of polling the directory on a regular basis.
   If your outgoing folder is on a NFS mount or another network file system,
index 3867ebc76a6fcda45473b50d53bb5978184aa8cd..de8deb68276369cd592c8e9b12d6ccb398f5c25c 100644 (file)
@@ -120,6 +120,11 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
                                        a call to be answered. Exit to that extension if it exists in the
                                        current context, or the context defined in the <variable>EXITCONTEXT</variable> variable,
                                        if it exists.</para>
+                                       <note>
+                                               <para>Many SIP and ISDN phones cannot send DTMF digits until the call is
+                                               connected.  If you wish to use this option with these phones, you
+                                               can use the <literal>Answer</literal> application before dialing.</para>
+                                       </note>
                                </option>
                                <option name="D" argsep=":">
                                        <argument name="called" />
@@ -170,10 +175,18 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
                                        </note>
                                </option>
                                <option name="h">
-                                       <para>Allow the called party to hang up by sending the <literal>*</literal> DTMF digit.</para>
+                                       <para>Allow the called party to hang up by sending the DTMF sequence
+                                       defined for disconnect in <filename>features.conf</filename>.</para>
                                </option>
                                <option name="H">
-                                       <para>Allow the calling party to hang up by hitting the <literal>*</literal> DTMF digit.</para>
+                                       <para>Allow the calling party to hang up by sending the DTMF sequence
+                                       defined for disconnect in <filename>features.conf</filename>.</para>
+                                       <note>
+                                               <para>Many SIP and ISDN phones cannot send DTMF digits until the call is
+                                               connected.  If you wish to allow DTMF disconnect before the dialed
+                                               party answers with these phones, you can use the <literal>Answer</literal>
+                                               application before dialing.</para>
+                                       </note>
                                </option>
                                <option name="i">
                                        <para>Asterisk will ignore any forwarding requests it may receive on this dial attempt.</para>
@@ -2070,10 +2083,6 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast
                res = -1; /* reset default */
        }
 
-       if (ast_test_flag64(&opts, OPT_DTMF_EXIT) || ast_test_flag64(&opts, OPT_CALLER_HANGUP)) {
-               __ast_answer(chan, 0, 0);
-       }
-
        if (continue_exec)
                *continue_exec = 0;