]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 298194 via svnmerge from
authorRichard Mudgett <rmudgett@digium.com>
Mon, 13 Dec 2010 17:11:43 +0000 (17:11 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 13 Dec 2010 17:11:43 +0000 (17:11 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r298194 | rmudgett | 2010-12-13 11:04:41 -0600 (Mon, 13 Dec 2010) | 26 lines

  Merged revisions 298193 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r298193 | rmudgett | 2010-12-13 10:56:07 -0600 (Mon, 13 Dec 2010) | 19 lines

    Outgoing PRI/BRI calls cannot do DTMF triggered transfers.

    Outgoing PRI/BRI calls cannot do DTMF triggered transfers if a PROCEEDING
    message is not received.  The debug output shows that the DTMF begin event
    is seen, but the DTMF end event is missing.  When the DTMF begin happens,
    the call is muted so we now have one way audio (until a DTMF end event is
    somehow seen).

    * Made set the proceeding flag when the PRI_EVENT_ANSWER event is
    received.

    * Made absorb the DTMF begin and DTMF end events if we are overlap dialing
    and have not seen a PROCEEDING message.

    * Added a debug message when absorbing a DTMF event.

    JIRA SWP-2690
    JIRA ABE-2697
  ........
................

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

channels/chan_dahdi.c
channels/sig_pri.c

index ee71909ecda06b283aa7fc8a4ee601feab3711ba..3d0eb4df0c6d3024864ad9a7e89e95e7bf8e3bd8 100644 (file)
@@ -8912,7 +8912,8 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast)
                                           a busy */
                                        f = NULL;
                                }
-                       } else if (f->frametype == AST_FRAME_DTMF) {
+                       } else if (f->frametype == AST_FRAME_DTMF_BEGIN
+                               || f->frametype == AST_FRAME_DTMF_END) {
 #ifdef HAVE_PRI
                                if (dahdi_sig_pri_lib_handles(p->sig)
                                        && !((struct sig_pri_chan *) p->sig_pvt)->proceeding
@@ -8920,6 +8921,10 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast)
                                        && ((!p->outgoing && (p->pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING))
                                                || (p->outgoing && (p->pri->overlapdial & DAHDI_OVERLAPDIAL_OUTGOING)))) {
                                        /* Don't accept in-band DTMF when in overlap dial mode */
+                                       ast_debug(1, "Absorbing inband %s DTMF digit: 0x%02X '%c' on %s\n",
+                                               f->frametype == AST_FRAME_DTMF_BEGIN ? "begin" : "end",
+                                               f->subclass.integer, f->subclass.integer, ast->name);
+
                                        f->frametype = AST_FRAME_NULL;
                                        f->subclass.integer = 0;
                                }
index 61c075b9e32e8aa12b3f35644f56dc36db8dbf5d..9b6d63a5177371623cd5805b0eb84657573cc8fc 100644 (file)
@@ -5259,6 +5259,7 @@ static void *pri_dchannel(void *vpri)
 #endif /* defined(HAVE_PRI_CALL_WAITING) */
                                sig_pri_handle_subcmds(pri, chanpos, e->e, e->answer.channel,
                                        e->answer.subcmds, e->answer.call);
+                               pri->pvts[chanpos]->proceeding = 1;
                                sig_pri_open_media(pri->pvts[chanpos]);
                                pri_queue_control(pri, chanpos, AST_CONTROL_ANSWER);
                                /* Enable echo cancellation if it's not on already */