[asterisk-bugs] [Asterisk 0018784]: Local channel DTMF detection broken by 17370

Asterisk Bug Tracker noreply at bugs.digium.com
Thu Feb 10 12:25:05 CST 2011


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=18784 
====================================================================== 
Reported By:                rsw686
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   18784
Category:                   Channels/General
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     feedback
Asterisk Version:           1.8.2.3 
JIRA:                        
Regression:                 No 
Reviewboard Link:            
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2011-02-10 09:40 CST
Last Modified:              2011-02-10 12:25 CST
====================================================================== 
Summary:                    Local channel DTMF detection broken by 17370
Description: 
The patch for issue 17370 has broken DTMF detection when calling through a
local channel. Here is a dialplan to quickly reproduce this. Dial 3350
enter 4567 and you will hear goodbye. Dial 3351 and you will hit invalid
every time. Revert the patch for 17370 and dialing 3351 works.

exten => 3350,1,Goto(loopdtmf,s,1)
exten => 3351,1,Dial(Local/3350 at from-internal,300,TW)

[loopdtmf]
exten => s,1,Answer
exten => s,n(repeat),Read(LOOPNUM,beep,,,,)
exten => s,n,GotoIf($[${LOOPNUM} = 4567]?good)
exten => s,n,Playback(invalid)
exten => s,n,Goto(repeat)
exten => s,n(good),Playback(goodbye)
exten => s,n,Hangup

======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
related to          0017370 [patch] ast_readstring (multiple DTMF i...
====================================================================== 

---------------------------------------------------------------------- 
 (0131799) rsw686 (reporter) - 2011-02-10 12:25
 https://issues.asterisk.org/view.php?id=18784#c131799 
---------------------------------------------------------------------- 
Output from dialplan

    -- Executing [3351 at from-internal:1] Dial("SIP/2002-00000004",
"Local/3350 at from-internal,300,TW") in new stack
    -- Called 3350 at from-internal
    -- Executing [3350 at from-internal:1]
Goto("Local/3350 at from-internal-ad30;2", "loopdtmf,s,1") in new stack
    -- Goto (loopdtmf,s,1)
    -- Executing [s at loopdtmf:1] Answer("Local/3350 at from-internal-ad30;2",
"") in new stack
    -- Local/3350 at from-internal-ad30;1 answered SIP/2002-00000004
    -- Executing [s at loopdtmf:2] Read("Local/3350 at from-internal-ad30;2",
"LOOPNUM,beep,,,,") in new stack
    -- <Local/3350 at from-internal-ad30;2> Playing 'beep.ulaw' (language
'en')
    -- User entered nothing.
[Feb 10 13:21:05] WARNING[4633]: ast_expr2.fl:468 ast_yyerror:
ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end;
Input:
 = 4567
 ^
[Feb 10 13:21:05] WARNING[4633]: ast_expr2.fl:472 ast_yyerror: If you have
questions, please refer to doc/tex/channelvariables.tex.
    -- Executing [s at loopdtmf:3] GotoIf("Local/3350 at from-internal-ad30;2",
"?good") in new stack
    -- Executing [s at loopdtmf:4]
Playback("Local/3350 at from-internal-ad30;2", "invalid") in new stack
    -- <Local/3350 at from-internal-ad30;2> Playing 'invalid.ulaw' (language
'en')
    -- Executing [s at loopdtmf:5] Goto("Local/3350 at from-internal-ad30;2",
"repeat") in new stack
    -- Goto (loopdtmf,s,2)
    -- Executing [s at loopdtmf:2] Read("Local/3350 at from-internal-ad30;2",
"LOOPNUM,beep,,,,") in new stack
    -- <Local/3350 at from-internal-ad30;2> Playing 'beep.ulaw' (language
'en')
    -- Executing [h at from-internal:1] Macro("SIP/2002-00000004",
"hangupcall") in new stack
    -- Executing [s at macro-hangupcall:1] GotoIf("SIP/2002-00000004",
"1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,4)
    -- Executing [s at macro-hangupcall:4] GotoIf("SIP/2002-00000004",
"1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,7)
    -- Executing [s at macro-hangupcall:7] GotoIf("SIP/2002-00000004",
"1?theend") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s at macro-hangupcall:9] Hangup("SIP/2002-00000004", "") in
new stack
  == Spawn extension (macro-hangupcall, s, 9) exited non-zero on
'SIP/2002-00000004' in macro 'hangupcall'
    -- User disconnected
  == Spawn extension (from-internal, 3351, 1) exited non-zero on
'SIP/2002-00000004'
voip*CLI>

[Feb 10 13:20:55] DTMF[4632] channel.c: DTMF begin '4' received on
SIP/2002-00000004
[Feb 10 13:20:55] DTMF[4632] channel.c: DTMF begin passthrough '4' on
SIP/2002-00000004
[Feb 10 13:20:55] DTMF[4632] channel.c: DTMF end '4' received on
SIP/2002-00000004, duration 120 ms
[Feb 10 13:20:55] DTMF[4632] channel.c: DTMF end accepted with begin '4'
on SIP/2002-00000004
[Feb 10 13:20:55] DTMF[4632] channel.c: DTMF end passthrough '4' on
SIP/2002-00000004
[Feb 10 13:20:55] DTMF[4632] channel.c: DTMF begin '5' received on
SIP/2002-00000004
[Feb 10 13:20:55] DTMF[4632] channel.c: DTMF begin passthrough '5' on
SIP/2002-00000004
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF end '5' received on
SIP/2002-00000004, duration 120 ms
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF end accepted with begin '5'
on SIP/2002-00000004
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF end passthrough '5' on
SIP/2002-00000004
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF begin '6' received on
SIP/2002-00000004
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF begin passthrough '6' on
SIP/2002-00000004
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF end '6' received on
SIP/2002-00000004, duration 80 ms
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF end accepted with begin '6'
on SIP/2002-00000004
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF end '6' detected to have
actual duration 59 on the wire, emulation will be triggered on
SIP/2002-00000004
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF end '6' has duration 59 but
want minimum 80, emulating on SIP/2002-00000004
[Feb 10 13:20:56] DTMF[4632] channel.c: DTMF end emulation of '6' queued
on SIP/2002-00000004
[Feb 10 13:20:57] DTMF[4632] channel.c: DTMF begin '7' received on
SIP/2002-00000004
[Feb 10 13:20:57] DTMF[4632] channel.c: DTMF begin passthrough '7' on
SIP/2002-00000004
[Feb 10 13:20:57] DTMF[4632] channel.c: DTMF end '7' received on
SIP/2002-00000004, duration 100 ms
[Feb 10 13:20:57] DTMF[4632] channel.c: DTMF end accepted with begin '7'
on SIP/2002-00000004
[Feb 10 13:20:57] DTMF[4632] channel.c: DTMF end '7' detected to have
actual duration 79 on the wire, emulation will be triggered on
SIP/2002-00000004
[Feb 10 13:20:57] DTMF[4632] channel.c: DTMF end '7' has duration 79 but
want minimum 80, emulating on SIP/2002-00000004
[Feb 10 13:20:57] DTMF[4632] channel.c: DTMF end emulation of '7' queued
on SIP/2002-00000004

Output from dialplan with patch r285744 reverted

  == Using SIP RTP TOS bits 184
  == Using SIP RTP CoS mark 5
    -- Executing [3351 at from-internal:1] Dial("SIP/2002-00000000",
"Local/3350 at from-internal,300,TW") in new stack
    -- Executing [3350 at from-internal:1]
Goto("Local/3350 at from-internal-eed1;2", "loopdtmf,s,1") in new stack
    -- Goto (loopdtmf,s,1)
    -- Executing [s at loopdtmf:1] Answer("Local/3350 at from-internal-eed1;2",
"") in new stack
    -- Called 3350 at from-internal
    -- Local/3350 at from-internal-eed1;1 answered SIP/2002-00000000
    -- Executing [s at loopdtmf:2] Read("Local/3350 at from-internal-eed1;2",
"LOOPNUM,beep,,,,") in new stack
    -- <Local/3350 at from-internal-eed1;2> Playing 'beep.ulaw' (language
'en')
    -- User entered '4567'
    -- Executing [s at loopdtmf:3] GotoIf("Local/3350 at from-internal-eed1;2",
"1?good") in new stack
    -- Goto (loopdtmf,s,6)
    -- Executing [s at loopdtmf:6]
Playback("Local/3350 at from-internal-eed1;2", "goodbye") in new stack
    -- <Local/3350 at from-internal-eed1;2> Playing 'goodbye.ulaw' (language
'en')
    -- Executing [s at loopdtmf:7] Hangup("Local/3350 at from-internal-eed1;2",
"") in new stack
  == Spawn extension (loopdtmf, s, 7) exited non-zero on
'Local/3350 at from-internal-eed1;2'
    -- Executing [h at from-internal:1] Macro("SIP/2002-00000000",
"hangupcall") in new stack
    -- Executing [s at macro-hangupcall:1] GotoIf("SIP/2002-00000000",
"1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,4)
    -- Executing [s at macro-hangupcall:4] GotoIf("SIP/2002-00000000",
"1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,7)
    -- Executing [s at macro-hangupcall:7] GotoIf("SIP/2002-00000000",
"1?theend") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s at macro-hangupcall:9] Hangup("SIP/2002-00000000", "") in
new stack
  == Spawn extension (macro-hangupcall, s, 9) exited non-zero on
'SIP/2002-00000000' in macro 'hangupcall'
  == Spawn extension (from-internal, h, 1) exited non-zero on
'SIP/2002-00000000'
  == Spawn extension (from-internal, 3351, 1) exited non-zero on
'SIP/2002-00000000'
    -- Executing [h at from-internal:1] Macro("SIP/2002-00000000",
"hangupcall") in new stack
    -- Executing [s at macro-hangupcall:1] GotoIf("SIP/2002-00000000",
"1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,4)
    -- Executing [s at macro-hangupcall:4] GotoIf("SIP/2002-00000000",
"1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,7)
    -- Executing [s at macro-hangupcall:7] GotoIf("SIP/2002-00000000",
"1?theend") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s at macro-hangupcall:9] Hangup("SIP/2002-00000000", "") in
new stack
  == Spawn extension (macro-hangupcall, s, 9) exited non-zero on
'SIP/2002-00000000' in macro 'hangupcall'
  == Spawn extension (from-internal, h, 1) exited non-zero on
'SIP/2002-00000000'

[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF begin '4' received on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF begin passthrough '4' on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF end '4' received on
SIP/2002-00000000, duration 100 ms
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF end accepted with begin '4'
on SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF end passthrough '4' on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5294] channel.c: DTMF begin '4' received on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:03] DTMF[5294] channel.c: DTMF begin ignored '4' on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:03] DTMF[5295] channel.c: DTMF begin '5' received on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5295] channel.c: DTMF begin ignored '5' on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5294] channel.c: DTMF end '4' received on
Local/3350 at from-internal-eed1;2, duration 100 ms
[Feb 10 13:23:03] DTMF[5294] channel.c: DTMF end passthrough '4' on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:03] DTMF[5295] channel.c: DTMF end '5' received on
SIP/2002-00000000, duration 80 ms
[Feb 10 13:23:03] DTMF[5295] channel.c: DTMF end passthrough '5' on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF end '5' received on
SIP/2002-00000000, duration 80 ms
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF begin emulation of '5' with
duration 80 queued on SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF begin '6' received on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF begin ignored '6' on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF end emulation of '5' queued
on SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5295] channel.c: DTMF end '6' received on
SIP/2002-00000000, duration 80 ms
[Feb 10 13:23:03] DTMF[5295] channel.c: DTMF end passthrough '6' on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5294] channel.c: DTMF begin '5' received on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:03] DTMF[5294] channel.c: DTMF begin ignored '5' on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:03] DTMF[5294] channel.c: DTMF end '5' received on
Local/3350 at from-internal-eed1;2, duration 100 ms
[Feb 10 13:23:03] DTMF[5294] channel.c: DTMF end passthrough '5' on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:03] DTMF[5295] channel.c: DTMF begin '7' received on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5295] channel.c: DTMF begin ignored '7' on
SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF end '6' received on
SIP/2002-00000000, duration 80 ms
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF begin emulation of '6' with
duration 80 queued on SIP/2002-00000000
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF end '7' received on
SIP/2002-00000000, duration 100 ms
[Feb 10 13:23:03] DTMF[5293] channel.c: DTMF end emulation of '6' queued
on SIP/2002-00000000
[Feb 10 13:23:04] DTMF[5295] channel.c: DTMF end '7' received on
SIP/2002-00000000, duration 100 ms
[Feb 10 13:23:04] DTMF[5295] channel.c: DTMF end passthrough '7' on
SIP/2002-00000000
[Feb 10 13:23:04] DTMF[5294] channel.c: DTMF begin '6' received on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:04] DTMF[5294] channel.c: DTMF begin ignored '6' on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:04] DTMF[5294] channel.c: DTMF end '6' received on
Local/3350 at from-internal-eed1;2, duration 100 ms
[Feb 10 13:23:04] DTMF[5294] channel.c: DTMF end passthrough '6' on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:04] DTMF[5293] channel.c: DTMF end '7' received on
SIP/2002-00000000, duration 100 ms
[Feb 10 13:23:04] DTMF[5293] channel.c: DTMF begin emulation of '7' with
duration 100 queued on SIP/2002-00000000
[Feb 10 13:23:04] DTMF[5293] channel.c: DTMF end emulation of '7' queued
on SIP/2002-00000000
[Feb 10 13:23:04] DTMF[5294] channel.c: DTMF begin '7' received on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:04] DTMF[5294] channel.c: DTMF begin ignored '7' on
Local/3350 at from-internal-eed1;2
[Feb 10 13:23:04] DTMF[5294] channel.c: DTMF end '7' received on
Local/3350 at from-internal-eed1;2, duration 100 ms
[Feb 10 13:23:04] DTMF[5294] channel.c: DTMF end passthrough '7' on
Local/3350 at from-internal-eed1;2 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2011-02-10 12:25 rsw686         Note Added: 0131799                          
======================================================================




More information about the asterisk-bugs mailing list