[Home]

Summary:ASTERISK-17276: [patch] Chan_dahdi hangs up after first ring when doing dtmf cid detection without polarity reversal
Reporter:Eric Negaard (enegaard)Labels:
Date Opened:2011-01-24 08:29:05.000-0600Date Closed:2011-03-01 12:50:09.000-0600
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Channels/chan_dahdi
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) issue18667.patch
Description:I believe this issue is related to closed bugs 16460 and 9096.
Seen when doing dtmf callerid detection without polarity reversal:
cidsignalling=dtmf
cidstart=dtmf
CID is properly detected, and the first ring is detected.
The dahdi channel is then hungup, and a second ring is detected (without CID).
The (external) caller is not disconnected.

****** ADDITIONAL INFORMATION ******

I have tracked this down to code in sig_analog.c that is meant to handle an ANALOG_EVENT_RINGBEGIN event. The code is not included because it is #ifdef'ed out and ANALOG_EVENT_RINGBEGIN is not a preprocessor macro - it is an enum.
Comments:By: Eric Negaard (enegaard) 2011-01-24 08:34:22.000-0600

[Jan 24 10:09:07] DEBUG[10691] sig_analog.c: channel (1) - signaling (5) - event (UNKNOWN/OTHER)
[Jan 24 10:09:07] VERBOSE[10691] sig_analog.c:   == Starting DTMF CID detection on channel 1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: __analog_ss_thread 1
[Jan 24 10:09:07] VERBOSE[12467] sig_analog.c:     -- Starting simple switch on 'DAHDI/1-1'
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: Receiving DTMF cid on channel DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x41 'A' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x41 'A' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: End DTMF digit: 0x41 'A' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x41 'A' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: CID got digit 'A'
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x32 '2' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x32 '2' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: End DTMF digit: 0x32 '2' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x32 '2' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: CID got digit '2'
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x30 '0' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x30 '0' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: End DTMF digit: 0x30 '0' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x30 '0' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: CID got digit '0'
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x31 '1' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x31 '1' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: End DTMF digit: 0x31 '1' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x31 '1' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: CID got digit '1'
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x34 '4' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x34 '4' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: End DTMF digit: 0x34 '4' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x34 '4' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: CID got digit '4'
[Jan 24 10:09:07] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x37 '7' on DAHDI/1-1
[Jan 24 10:09:07] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x37 '7' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: End DTMF digit: 0x37 '7' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x37 '7' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: CID got digit '7'
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x35 '5' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x35 '5' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: End DTMF digit: 0x35 '5' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x35 '5' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: CID got digit '5'
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x30 '0' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x30 '0' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: End DTMF digit: 0x30 '0' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x30 '0' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: CID got digit '0'
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x31 '1' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x31 '1' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: End DTMF digit: 0x31 '1' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x31 '1' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: CID got digit '1'
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: Begin DTMF digit: 0x23 '#' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] chan_dahdi.c: Begin DTMF digit: 0x23 '#' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: End DTMF digit: 0x23 '#' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] chan_dahdi.c: End DTMF digit: 0x23 '#' on DAHDI/1-1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: CID got digit '#'
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: analog_exception 1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: Exception on 10, channel 1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: __analog_handle_event 1
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: Got event ANALOG_EVENT_RINGBEGIN(12) on channel 1 (index 0)
[Jan 24 10:09:08] DEBUG[12467] sig_analog.c: Dunno what to do with event 12 on channel 1
[Jan 24 10:09:09] DEBUG[12467] sig_analog.c: analog_exception 1
[Jan 24 10:09:09] DEBUG[12467] sig_analog.c: Exception on 10, channel 1
[Jan 24 10:09:09] DEBUG[12467] sig_analog.c: __analog_handle_event 1
[Jan 24 10:09:09] DEBUG[12467] sig_analog.c: Got event ANALOG_EVENT_RINGOFFHOOK(2) on channel 1 (index 0)
[Jan 24 10:09:09] DEBUG[12467] sig_analog.c: Ring detected
[Jan 24 10:09:09] DEBUG[12467] sig_analog.c: CID got string 'A20147501#'
[Jan 24 10:09:09] DEBUG[12467] sig_analog.c: CID is '20147501', flags 0
[Jan 24 10:09:09] DEBUG[12467] chan_dahdi.c: Requested indication 3 on channel DAHDI/1-1
[Jan 24 10:09:09] DEBUG[12467] chan_dahdi.c: Requested indication 3 on channel DAHDI/1-1
[Jan 24 10:09:09] DEBUG[12467] chan_dahdi.c: Requested indication 3 on channel DAHDI/1-1
[Jan 24 10:09:17] DEBUG[12467] sig_analog.c: analog_exception 1
[Jan 24 10:09:17] DEBUG[12467] sig_analog.c: Exception on 10, channel 1
[Jan 24 10:09:17] DEBUG[12467] sig_analog.c: __analog_handle_event 1
[Jan 24 10:09:17] DEBUG[12467] sig_analog.c: Got event ANALOG_EVENT_RINGBEGIN(12) on channel 1 (index 0)
[Jan 24 10:09:17] DEBUG[12467] sig_analog.c: Dunno what to do with event 12 on channel 1
[Jan 24 10:09:17] DEBUG[12467] chan_dahdi.c: dahdi_hangup(DAHDI/1-1)
[Jan 24 10:09:17] DEBUG[12467] sig_analog.c: analog_hangup 1
[Jan 24 10:09:17] DEBUG[12467] sig_analog.c: Hangup: channel: 1 index = 0, normal = 1, callwait = 0, thirdcall = 0
[Jan 24 10:09:17] DEBUG[12467] chan_dahdi.c: Set option TONE VERIFY, mode: OFF(0) on DAHDI/1-1
[Jan 24 10:09:17] DEBUG[12467] chan_dahdi.c: Set option TDD MODE, value: OFF(0) on DAHDI/1-1
[Jan 24 10:09:17] DEBUG[12467] sig_analog.c: Updated conferencing on 1, with 0 conference users
[Jan 24 10:09:17] VERBOSE[12467] sig_analog.c:     -- Hanging up on 'DAHDI/1-1'
[Jan 24 10:09:17] VERBOSE[12467] chan_dahdi.c:     -- Hungup 'DAHDI/1-1'
[Jan 24 10:09:25] DEBUG[10691] sig_analog.c: channel (1) - signaling (5) - event (UNKNOWN/OTHER)
[Jan 24 10:09:25] VERBOSE[10691] sig_analog.c:   == Starting DTMF CID detection on channel 1
[Jan 24 10:09:25] DEBUG[12470] sig_analog.c: __analog_ss_thread 1
[Jan 24 10:09:25] VERBOSE[12470] sig_analog.c:     -- Starting simple switch on 'DAHDI/1-1'
[Jan 24 10:09:25] DEBUG[12470] sig_analog.c: Receiving DTMF cid on channel DAHDI/1-1
[Jan 24 10:09:25] DEBUG[12470] sig_analog.c: analog_exception 1
[Jan 24 10:09:25] DEBUG[12470] sig_analog.c: Exception on 10, channel 1
[Jan 24 10:09:25] DEBUG[12470] sig_analog.c: __analog_handle_event 1
[Jan 24 10:09:25] DEBUG[12470] sig_analog.c: Got event ANALOG_EVENT_RINGBEGIN(12) on channel 1 (index 0)
[Jan 24 10:09:25] DEBUG[12470] sig_analog.c: Dunno what to do with event 12 on channel 1
[Jan 24 10:09:26] DEBUG[12470] sig_analog.c: analog_exception 1
[Jan 24 10:09:26] DEBUG[12470] sig_analog.c: Exception on 10, channel 1
[Jan 24 10:09:26] DEBUG[12470] sig_analog.c: __analog_handle_event 1
[Jan 24 10:09:26] DEBUG[12470] sig_analog.c: Got event ANALOG_EVENT_RINGOFFHOOK(2) on channel 1 (index 0)
[Jan 24 10:09:26] DEBUG[12470] sig_analog.c: Ring detected
[Jan 24 10:09:26] DEBUG[12470] sig_analog.c: CID got string ''
[Jan 24 10:09:26] DEBUG[12470] sig_analog.c: CID is '', flags 8
[Jan 24 10:09:26] DEBUG[12470] chan_dahdi.c: Requested indication 3 on channel DAHDI/1-1
[Jan 24 10:09:26] DEBUG[12470] chan_dahdi.c: Requested indication 3 on channel DAHDI/1-1
[Jan 24 10:09:26] DEBUG[12470] chan_dahdi.c: Requested indication 3 on channel DAHDI/1-1
[Jan 24 10:09:34] DEBUG[12470] chan_dahdi.c: dahdi_hangup(DAHDI/1-1)
[Jan 24 10:09:34] DEBUG[12470] sig_analog.c: analog_hangup 1
[Jan 24 10:09:34] DEBUG[12470] sig_analog.c: Hangup: channel: 1 index = 0, normal = 1, callwait = 0, thirdcall = 0
[Jan 24 10:09:34] DEBUG[12470] chan_dahdi.c: Set option TONE VERIFY, mode: OFF(0) on DAHDI/1-1
[Jan 24 10:09:34] DEBUG[12470] chan_dahdi.c: Set option TDD MODE, value: OFF(0) on DAHDI/1-1
[Jan 24 10:09:34] DEBUG[12470] sig_analog.c: Updated conferencing on 1, with 0 conference users
[Jan 24 10:09:34] VERBOSE[12470] sig_analog.c:     -- Hanging up on 'DAHDI/1-1'
[Jan 24 10:09:34] VERBOSE[12470] chan_dahdi.c:     -- Hungup 'DAHDI/1-1'
[Jan 24 10:09:35] DEBUG[10691] sig_analog.c: channel (1) - signaling (5) - event (UNKNOWN/OTHER)
[Jan 24 10:09:35] VERBOSE[10691] sig_analog.c:   == Starting DTMF CID detection on channel 1
[Jan 24 10:09:35] DEBUG[12511] sig_analog.c: __analog_ss_thread 1
[Jan 24 10:09:35] VERBOSE[12511] sig_analog.c:     -- Starting simple switch on 'DAHDI/1-1'
[Jan 24 10:09:35] DEBUG[12511] sig_analog.c: Receiving DTMF cid on channel DAHDI/1-1
[Jan 24 10:09:39] WARNING[12511] sig_analog.c: DTMFCID timed out waiting for ring. Exiting simple switch
[Jan 24 10:09:39] DEBUG[12511] chan_dahdi.c: dahdi_hangup(DAHDI/1-1)
[Jan 24 10:09:39] DEBUG[12511] sig_analog.c: analog_hangup 1
[Jan 24 10:09:39] DEBUG[12511] sig_analog.c: Hangup: channel: 1 index = 0, normal = 1, callwait = 0, thirdcall = 0
[Jan 24 10:09:39] DEBUG[12511] chan_dahdi.c: Set option TONE VERIFY, mode: OFF(0) on DAHDI/1-1
[Jan 24 10:09:39] DEBUG[12511] chan_dahdi.c: Set option TDD MODE, value: OFF(0) on DAHDI/1-1
[Jan 24 10:09:39] DEBUG[12511] sig_analog.c: Updated conferencing on 1, with 0 conference users
[Jan 24 10:09:39] VERBOSE[12511] sig_analog.c:     -- Hanging up on 'DAHDI/1-1'
[Jan 24 10:09:39] VERBOSE[12511] chan_dahdi.c:     -- Hungup 'DAHDI/1-1'

By: Eric Negaard (enegaard) 2011-01-24 08:39:00.000-0600

Have attached a suggested patch, which simply involves removing the #ifdef around the code for handling ANALOG_EVENT_RINGBEGIN.

By: Leif Madsen (lmadsen) 2011-01-24 09:11:51.000-0600

Marked as Needs License until the license is approved. Once that is done then a bug marshal can move this to Confirmed.

By: Digium Subversion (svnbot) 2011-03-01 12:44:06.000-0600

Repository: asterisk
Revision: 309126

U   branches/1.8/channels/sig_analog.c

------------------------------------------------------------------------
r309126 | rmudgett | 2011-03-01 12:44:05 -0600 (Tue, 01 Mar 2011) | 16 lines

Chan_dahdi does not retain CID when detecting DTMF CID without polarity reversal.

Looks like an unintended change when sig_analog.c was extracted from
chan_dahdi.c.

Removed useless conditional around needed code and fixed resulting
compiler warning.

(closes issue ASTERISK-17276)
Reported by: enegaard
Patches:
     issue18667.patch uploaded by enegaard (license 1197)
Tested by: enegaard

JIRA SWP-2965

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=309126

By: Digium Subversion (svnbot) 2011-03-01 12:50:08.000-0600

Repository: asterisk
Revision: 309127

_U  trunk/
U   trunk/channels/sig_analog.c

------------------------------------------------------------------------
r309127 | rmudgett | 2011-03-01 12:50:08 -0600 (Tue, 01 Mar 2011) | 23 lines

Merged revisions 309126 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
 r309126 | rmudgett | 2011-03-01 12:44:05 -0600 (Tue, 01 Mar 2011) | 16 lines
 
 Chan_dahdi does not retain CID when detecting DTMF CID without polarity reversal.
 
 Looks like an unintended change when sig_analog.c was extracted from
 chan_dahdi.c.
 
 Removed useless conditional around needed code and fixed resulting
 compiler warning.
 
 (closes issue ASTERISK-17276)
 Reported by: enegaard
 Patches:
       issue18667.patch uploaded by enegaard (license 1197)
 Tested by: enegaard
 
 JIRA SWP-2965
........

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=309127