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-0600 | Date Closed: | 2011-03-01 12:50:09.000-0600 |
Priority: | Minor | Regression? | No |
Status: | Closed/Complete | Components: | 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 |