[Home]

Summary:ASTERISK-16803: [patch] Oneway audio from SIP phone to FXS port after FXS port gets a CallWaiting pip
Reporter:Alec Davis (alecdavis)Labels:
Date Opened:2010-10-13 04:31:47Date Closed:2011-01-09 22:01:53.000-0600
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Channels/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) bug18129.diff.txt
( 1) bug18129.diff2.txt
( 2) bug18129.diff3.txt
( 3) callwait-nomoh.txt
( 4) full-18129.txt
( 5) issue_18129_v1.8_v2.patch
( 6) issue_18129_v1.8_v2.tweak.patch
( 7) issue_18129_v1.8_v3.patch
( 8) issue_18129_v1.8.patch
Description:Internal SIP phone initiates a call with FXS port on TDM800P.
FXS connected phone has to have FSK CIDCW support to fail, as it will send back a DTMF 'A' or 'D' when it's ready to receive CallerID.
A normal phone with no CID never fails.

External call comes in on FXO port, and attempts to ring FXS ports.
Call waiting beep is heard at FXS port, also no outbound audio to SIP phone.

Then FXS port hook flashes, the FXO port is then connected to FXS as expected.
But SIP device should hear MOH, but has dead air.

If the FXS port hook flashes to the SIP device, the FXO call then does hear MOH.
Hook flash again back to FXO call, SIP hears nothing.  

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

In a second senario, start the same as above.
SIP phone initiates a call with FXS port, which is answered.

If FXS port hook flashes to make another call, SIP hears MOH.

But unrelated - the FXS port at this stage is not able to hook flash between calls, which would have tested the MOH swapping between calls.

Comments:By: Alec Davis (alecdavis) 2010-10-13 04:54:22

callwait-nomoh.txt: console output capture and annotated
full-18129.txt: corressponding full file log for the same call



By: Alec Davis (alecdavis) 2010-10-14 05:43:11

Another related issue, is one way audio from first caller, as soon as the call waiting beep starts.

Can be corrected by 'B' pressing DTMF key!!!!! But not by 'A' pressing a key.

SIP 'A'  --call 1--->>---------[ASTERISK]---->>----'B' FXS port
SIP 'C'  --call 2--->>---------+

'A' calls 'B', 'B' answers, all ok so far
'C' calls 'B', 'B' hears beep
  A<-B audio is dead!
  A->B audio OK
  'B' presses a DTMF key
  A<->B audio now OK

'B' now hook flashes to answer 'C'
  'A' has MOH
  C<->B audio OK

'B' now hook flashes to 'A'
  'C' has MOH
  A<->B audio OK.

By: Alec Davis (alecdavis) 2010-10-14 13:43:37

Thrid senario works.

External call FXO <-> FXS port established.

2nd call SIP -> FXS port.
CW beep heard at FXS port.

FXS port can hook flash to answer SIP call.
FXO port has MOH as expected.

By: Alec Davis (alecdavis) 2010-10-19 05:08:00

Uploaded bug18129.diff.txt

The issue is as the callwaiting spill to sent to the FXS port, the DSP is triggers on a DTMF.

Then the RTP engine sends DTMF packets continuously to the SIP device, hence the continuous tone.

This patch disabled the DTMF detection, when the callwait is started.

This can be simulated by
establish a call from FXS port -> SIP phone
then from CLI
 console dial 89@phones

By: Alec Davis (alecdavis) 2010-10-19 05:19:50

Problem repeatable with:

SVN-trunk-r291658M
SVN-branch-1.6.2-r292229M

By: Alec Davis (alecdavis) 2010-10-19 05:25:18

<u>1.6.2 Without patch: Example console output: with rtp debug on</u>

Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001895, ts 3309220, len 000160)
Sent RTP packet to      192.168.124.250:35010 (type 00, seq 043324, ts 080480, len 000160)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001896, ts 3309380, len 000160)
Sent RTP packet to      192.168.124.250:35010 (type 00, seq 043325, ts 080640, len 000160)
asterix*CLI> console dial 89@phones
[2010-10-19 23:21:47.024338] WARNING[21102]: chan_oss.c:486 setformat: Unable to re-open DSP device /dev/dsp: No such file or directory
[2010-10-19 23:21:47.024949] NOTICE[21102]: console_video.c:133 console_video_start: voice only, console video support not present
   -- Executing [89@phones:1] Dial("Console/dsp", "DAHDI/35,60") in new stack
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001897, ts 3309540, len 000160)
   -- Called 35
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001898, ts 3309700, len 000160)
   -- DAHDI/35-2 is ringing
Sent RTP packet to      192.168.124.250:35010 (type 00, seq 043326, ts 080800, len 000160)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001899, ts 3309860, len 000160)
...
Sent RTP packet to      192.168.124.250:35010 (type 00, seq 043347, ts 084160, len 000160)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001920, ts 3313220, len 000160)
Sent RTP packet to      192.168.124.250:35010 (type 00, seq 043348, ts 084320, len 000160)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001921, ts 3313380, len 000160)
<B>Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043349, ts 084480, len 000004)
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043350, ts 084480, len 000004)
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043351, ts 084480, len 000004)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001922, ts 3313540, len 000160)
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043352, ts 084480, len 000004)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001923, ts 3313700, len 000160)
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043353, ts 084480, len 000004)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001924, ts 3313860, len 000160)
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043354, ts 084480, len 000004)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001925, ts 3314020, len 000160)
   -- CPE supports Call Waiting Caller*ID.  Sending '/'
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043355, ts 084480, len 000004)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001926, ts 3314180, len 000160)
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043356, ts 084480, len 000004)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001927, ts 3314340, len 000160)
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043357, ts 084480, len 000004)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001928, ts 3314500, len 000160)
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043358, ts 084480, len 000004)
Got  RTP packet from    192.168.124.250:35010 (type 00, seq 001929, ts 3314660, len 000160)
Sent RTP DTMF packet to 192.168.124.250:35010 (type 101, seq 043359, ts 084480, len 000004)</B>



By: Alec Davis (alecdavis) 2010-10-19 06:37:03

uploaded diff2.txt
previous version didn't re-enable DTMF detection after CW spill had finished.

By: Alec Davis (alecdavis) 2010-10-20 02:42:00

Main description updated: Requires an analog handset with CIDCW support.

in chan_dahdi.conf the 'callwaitingcallerid' default is yes
; Support caller ID on Call Waiting
;
callwaitingcallerid=yes

Setting 'callwaitingcallerid=no' avoids the current problem.

Disabling the DTMF detector was the wrong approach, SAS+CAS signalling requires the DTMF detector to monitor for a CPE response of DTMF 'A' or 'D', which is acknowledgement to start sending the CallerID spill.

Seems like;
All parties hear part of the SAS (440Hz tone) - varies.
All parties in existing conference should be muted from the Called phone for 500ms while the SAS+CAS signalling is going on.

Proceedure should be: Seems like steps 1 and 7 are missing.

1. Mute other parties, timeout 500ms (unmute on timeout).
2. Send SAS: Subscriber alert Signal of 440Hz
3. ~50ms delay
4. Send CAS: CPE alert Signal CAS tone 1 (2130 Hz) and CAS tone 2 (2750 Hz) to get the CPE’s attention.
5. Wait for CPE to send an acknowledgement (DTMF 'A' or DTMF 'D').
6. If ack received send CallerID FSK spill.
7. Unmute other parties.

During Step 5 above (when the CPE reponds), is when the RTP DTMF stream is then continously sent to the other parties in the 1st call.



By: Alec Davis (alecdavis) 2010-11-04 03:00:29

<u><<<<<<<<<BT100 in conversation with FXS port>>>>>>>>>></u>
<u><<LAPTOP dials FXS PORT>></u>
 == Using SIP RTP CoS mark 5
   -- Executing [89@phones:1] Dial("SIP/laptop-00000002", "DAHDI/35,60") in new stack
[2010-11-04 20:44:25.647975] NOTICE[20179]: chan_dahdi.c:5038 save_conference: Disabled conferencing
[2010-11-04 20:44:25.648056] WARNING[20179]: chan_dahdi.c:1876 my_callwait: CIDCW + CAS
   -- Called 35
   -- DAHDI/35-2 is ringing
[2010-11-04 20:44:26.127122] NOTICE[20178]: chan_sip.c:6225 sip_senddigit_begin: SIP_DTMF_RFC2833 SIP/bt100black-00000001 digit=D
<u><<BT100 has heard beginning of FXS phone's ACK response to the CAS (a DTMF 'D') and is now begin sent DTMF RTP packets>></u>
[2010-11-04 20:44:26.207062] NOTICE[20178]: sig_analog.c:1576 analog_handle_dtmfup: Got some DTMF, but it's for the CAS
[2010-11-04 20:44:26.726994] NOTICE[20178]: chan_dahdi.c:5054 restore_conference: Restored conferencing
[2010-11-04 20:44:35.627104] NOTICE[20178]: chan_dahdi.c:5038 save_conference: Disabled conferencing
[2010-11-04 20:44:35.627187] WARNING[20178]: chan_dahdi.c:5155 dahdi_callwait: CIDCW no CAS
<u><<Hangup 2nd call>></u>
   -- Hanging up on 'DAHDI/35-2'
   -- Hungup 'DAHDI/35-2'
 == Spawn extension (phones, 89, 1) exited non-zero on 'SIP/laptop-00000002'
<u><<FXS port about to dial '1' to restore voice with BT100>></u>
[2010-11-04 20:44:51.407313] NOTICE[20178]: chan_sip.c:6225 sip_senddigit_begin: SIP_DTMF_RFC2833 SIP/bt100black-00000001 digit=1
[2010-11-04 20:44:51.527518] NOTICE[20178]: chan_sip.c:6251 sip_senddigit_end: SIP_DTMF_RFC2833 SIP/bt100black-00000001 digit=1

The previous approach to disable the DTMF detector, seems like it should be disabled for all other parties, except for the FXS port which is being called.



By: Alec Davis (alecdavis) 2010-11-04 03:25:01

There actually are 2 problems here.

1. The DSP DTMF detector doesn't send an DTMF end event, even though it's sent a DTMF begin event.

2. To avoid 1 above, avoidance code needs to mute the other channels that are not involved in the SAS+CAS signalling.

By: Alec Davis (alecdavis) 2010-11-04 06:23:03

uploaded bug18129.diff3.txt

Now mutes conference during SAS+CAS signalling.

By: Richard Mudgett (rmudgett) 2010-11-18 12:31:21.000-0600

The changes done in trunk revisions -r293531 and -r293808 may help although they were mainly directed at three way calling.

By: Alec Davis (alecdavis) 2010-11-18 13:01:02.000-0600

Hopefully can check later today/night.

I've been mulling this over, and my statement to mute the other party/parties is wrong, as in the case of many in a meetme conference.
The received voice/data/dtmf from the device being rung at the FXS port should not be forwarded (bridged) to the conference during SAS+CAS signalling.

By: Richard Mudgett (rmudgett) 2010-11-18 14:08:32.000-0600

I can reproduce.  The dahdi_handle_dtmfup() and analog_handle_dtmfup() calls replace the DTMF end control frame with something else.  They need to be modified to replace the DTMF begin frame with a NULL frame as well.

By: Alec Davis (alecdavis) 2010-11-22 14:36:15.000-0600

richard: I see some oneway patches applied relating to sig_anlog not being in sync. Did they fix this issue?

I noted that you could reproduce, so didn't test - sorry If I should have done.

By: Richard Mudgett (rmudgett) 2010-11-22 14:50:46.000-0600

No.  The one-way patch fixed another CW/CID issue as described by the commit message.

The issue you found is possible on 1.4 and later.  The problem is the DTMF begin frame needs to be suppressed as well.  The DTMF begin frame is causing SIP to start sending the DTMF RTP frames.  Since the DTMF end frame is suppressed/replaced, SIP never stops sending those DTMF RTP packets.

I have a patch just about ready for testing once I resolve a related CW/CID issue I discovered.

By: Alec Davis (alecdavis) 2010-11-22 15:11:31.000-0600

umm, try to fix one bug, find 3 others....

By: Richard Mudgett (rmudgett) 2010-11-22 16:39:29.000-0600

The issue_18129_v1.8.patch fixes this issue.  It suppresses the DTMF begin frame as well as the DTMF end frame.  It also fixes a couple cleanup issues if you answer the call while it is doing the CID spill.

The new problem I found is the CW/CID spill is not sent if the call is natively bridged to another analog port.  The analog port does not detect the CW CAS DTMF 'D' response from the phone so the CID spill is not sent.  DTMF detection is disabled when in a native bridge.  To fix the native bridge issue is going to need more thought.  Simply enabling DTMF detection results in doubled digits.

By: Richard Mudgett (rmudgett) 2010-11-22 17:27:33.000-0600

The issue_18129_v1.8_v2.patch fixes the CW/CID spill problem described in 0129064.  I found a comment in dahdi_bridge() about native bridging not supporting DTMF detection due to unresolved issues.

By: Alec Davis (alecdavis) 2010-11-23 01:06:23.000-0600

succesfully applied patch issue_18129_v1.8_v2.patch to SVN-trunk-r295870M

Before patch confirmed oneway audio was still a problem with SVN-trunk-r295870M.
After patch, confirmed existing problem was fixed, and correct CWCID sent to the FXS port.

Test setup:
Call 1: SIPA (grandstream) -> FXS port 1, answered and talking
Call 2: SIPB (xlite) -> FXS port 1, callwait pip, FSK and further CW pips.

Another related issue, now that CWCID is working :D, using the above test senario, is that the SIPA Caller hears the initial CW pip and the CW-CID as it's being sent to the FXS connected phone, the successive CW pips are muted for the intial SIPA caller.

This is where I believe the FXS port being called needs to be isolated somehow during the initial CWCID exchange, like is done for the succesive CW pips.

The reason this is an issue, is that neither party knows if it's them that has a call waiting.

I wonder (untested), if the initial call was between 2 analog FXS ports, would they both get the CW-CID of the 2nd caller?



By: Alec Davis (alecdavis) 2010-11-23 03:28:05.000-0600

issue_18129_v1.8_v2.tweak.patch

Noticed possible out by 1 sample.
If ever possible, if 1 sample was set for 'cidcwexpire' the restore_conference isn't in the code path.

now follows/similar to
if (p->ringt > 0) {
               if (!(--p->ringt)) {

By: Richard Mudgett (rmudgett) 2010-11-23 16:26:34.000-0600

The issue_18129_v1.8_v3.patch incorporates your issue_18129_v1.8_v2.tweak.patch and also fixes the other parties hearing the CW/CID spills.

By: Alec Davis (alecdavis) 2010-11-24 01:11:40.000-0600

Succesfully applied issue_18129_v1.8_v3.patch.

Same simple tests as before in ~129068, worked as expected.

Also tested and worked.
call1, FXO port 1 -> FXS port 1, established and talking.
call2, SIP -> FXS port1 , muted at FXO port, callwaiting pip at FXS, then CW spill at FXS, unmuted at FXO.

I'm happy.

By: Alec Davis (alecdavis) 2010-11-24 01:55:07.000-0600

unrelated? But as this all works well now, you should be able to choose whether to answer the 2nd caller.

Using my test senario from ~129068 when SIPA hangs up first from call1 with FXS port, SIPB on call-waiting is automatically connected to the FXS port! Yuck - you might not want to answer the call-waiting call, guess it saves a hook flash.



By: Richard Mudgett (rmudgett) 2010-11-24 09:25:07.000-0600

I saw that auto-connect to the CW call as well.  There is some code to wait for the called party to explicitly answer the CW call.  Apparently it does not work under all conditions.  Anyway that is another issue.

I will work on committing the fix to the various branches today.

By: Alec Davis (alecdavis) 2010-11-24 12:55:15.000-0600

Now for some post analysis.

Have these issues always been a problem? Every asterisk based analog FXS gateway may benefit from these fixes, as when first deployed with basic phones it worked, then as the site upgraded their phones with CWCID capable phones, these issues started to pop up.

Especially as 'callwaitingcallerid=yes' is the default.

The above senario is what happened here, seemed to work fine initially, then got a new phone, and thats when the 'fun' started.

Good work, expect to see a ramp up in FXS port sales.

By: Richard Mudgett (rmudgett) 2010-11-24 13:14:18.000-0600

CW/CID likely broke when the DTMF begin/end events were added to Asterisk.  There used to be just a DTMF event sent when the DTMF signal ended.

By: Digium Subversion (svnbot) 2010-11-24 16:41:08.000-0600

Repository: asterisk
Revision: 296165

U   branches/1.4/channels/chan_dahdi.c

------------------------------------------------------------------------
r296165 | rmudgett | 2010-11-24 16:41:08 -0600 (Wed, 24 Nov 2010) | 43 lines

Oneway audio to SIP phone from FXS port after FXS port gets a CallWaiting pip.

The FXS connected phone has to have CW/CID support to fail, as it will
send back a DTMF 'A' or 'D' when it's ready to receive CallerID.  A normal
phone with no CID never fails.  Also the SIP phone does not hear MOH when
the CW call is answered.

The DTMF end frame is suppressed when the phone acknowledges the CW signal
for CID.  The problem is the DTMF begin frame needs to be suppressed as
well.  The DTMF begin frame is causing SIP to start sending the DTMF RTP
frames.  Since the DTMF end frame is suppressed, SIP will not stop sending
those DTMF RTP packets.

* Suppress the DTMF begin and end frames when the channel driver is
looking for DTMF digits.

* Fixed a couple issues caused by not cleaning up the CID spill if you
answer the CW call while it is sending the CID spill.

* Fixed not sending CW/CID spill to the phone when the call is natively
bridged.  (Fixed by not using native bridge if CW/CID is possible.)

* Suppress received audio when sending CW/CID spills.  The other parties
involved do not need to hear the CW/CID spills and may be confused if the
CW call is for them.

(closes issue ASTERISK-16803)
Reported by: alecdavis
Patches:
     issue_18129_v1.8_v3.patch uploaded by rmudgett (license 664)
Tested by: alecdavis, rmudgett


NOTE:

* v1.4 does not have the main problem fixed by suppressing the DTMF start
frames.  The other three items fixed are relevant.

* If you really must restore native bridging between analog ports, you
need to disable CW/CID either by configuring chan_dahdi.conf
callwaitingcallerid=no or dialing *70 before dialing the number to
temporarily disable CW.

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

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

By: Digium Subversion (svnbot) 2010-11-24 16:42:47.000-0600

Repository: asterisk
Revision: 296166

_U  branches/1.6.2/
U   branches/1.6.2/channels/chan_dahdi.c

------------------------------------------------------------------------
r296166 | rmudgett | 2010-11-24 16:42:46 -0600 (Wed, 24 Nov 2010) | 50 lines

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

........
 r296165 | rmudgett | 2010-11-24 16:41:07 -0600 (Wed, 24 Nov 2010) | 43 lines
 
 Oneway audio to SIP phone from FXS port after FXS port gets a CallWaiting pip.
 
 The FXS connected phone has to have CW/CID support to fail, as it will
 send back a DTMF 'A' or 'D' when it's ready to receive CallerID.  A normal
 phone with no CID never fails.  Also the SIP phone does not hear MOH when
 the CW call is answered.
 
 The DTMF end frame is suppressed when the phone acknowledges the CW signal
 for CID.  The problem is the DTMF begin frame needs to be suppressed as
 well.  The DTMF begin frame is causing SIP to start sending the DTMF RTP
 frames.  Since the DTMF end frame is suppressed, SIP will not stop sending
 those DTMF RTP packets.
 
 * Suppress the DTMF begin and end frames when the channel driver is
 looking for DTMF digits.
 
 * Fixed a couple issues caused by not cleaning up the CID spill if you
 answer the CW call while it is sending the CID spill.
 
 * Fixed not sending CW/CID spill to the phone when the call is natively
 bridged.  (Fixed by not using native bridge if CW/CID is possible.)
 
 * Suppress received audio when sending CW/CID spills.  The other parties
 involved do not need to hear the CW/CID spills and may be confused if the
 CW call is for them.
 
 (closes issue ASTERISK-16803)
 Reported by: alecdavis
 Patches:
       issue_18129_v1.8_v3.patch uploaded by rmudgett (license 664)
 Tested by: alecdavis, rmudgett
 
 
 NOTE:
 
 * v1.4 does not have the main problem fixed by suppressing the DTMF start
 frames.  The other three items fixed are relevant.
 
 * If you really must restore native bridging between analog ports, you
 need to disable CW/CID either by configuring chan_dahdi.conf
 callwaitingcallerid=no or dialing *70 before dialing the number to
 temporarily disable CW.
........

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

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

By: Digium Subversion (svnbot) 2010-11-24 16:49:49.000-0600

Repository: asterisk
Revision: 296167

_U  branches/1.8/
U   branches/1.8/channels/chan_dahdi.c
U   branches/1.8/channels/sig_analog.c
U   branches/1.8/channels/sig_analog.h
U   branches/1.8/channels/sig_pri.h

------------------------------------------------------------------------
r296167 | rmudgett | 2010-11-24 16:49:48 -0600 (Wed, 24 Nov 2010) | 57 lines

Merged revisions 296166 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
 r296166 | rmudgett | 2010-11-24 16:42:45 -0600 (Wed, 24 Nov 2010) | 50 lines
 
 Merged revisions 296165 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4
 
 ........
   r296165 | rmudgett | 2010-11-24 16:41:07 -0600 (Wed, 24 Nov 2010) | 43 lines
   
   Oneway audio to SIP phone from FXS port after FXS port gets a CallWaiting pip.
   
   The FXS connected phone has to have CW/CID support to fail, as it will
   send back a DTMF 'A' or 'D' when it's ready to receive CallerID.  A normal
   phone with no CID never fails.  Also the SIP phone does not hear MOH when
   the CW call is answered.
   
   The DTMF end frame is suppressed when the phone acknowledges the CW signal
   for CID.  The problem is the DTMF begin frame needs to be suppressed as
   well.  The DTMF begin frame is causing SIP to start sending the DTMF RTP
   frames.  Since the DTMF end frame is suppressed, SIP will not stop sending
   those DTMF RTP packets.
   
   * Suppress the DTMF begin and end frames when the channel driver is
   looking for DTMF digits.
   
   * Fixed a couple issues caused by not cleaning up the CID spill if you
   answer the CW call while it is sending the CID spill.
   
   * Fixed not sending CW/CID spill to the phone when the call is natively
   bridged.  (Fixed by not using native bridge if CW/CID is possible.)
   
   * Suppress received audio when sending CW/CID spills.  The other parties
   involved do not need to hear the CW/CID spills and may be confused if the
   CW call is for them.
   
   (closes issue ASTERISK-16803)
   Reported by: alecdavis
   Patches:
         issue_18129_v1.8_v3.patch uploaded by rmudgett (license 664)
   Tested by: alecdavis, rmudgett
   
   
   NOTE:
   
   * v1.4 does not have the main problem fixed by suppressing the DTMF start
   frames.  The other three items fixed are relevant.
   
   * If you really must restore native bridging between analog ports, you
   need to disable CW/CID either by configuring chan_dahdi.conf
   callwaitingcallerid=no or dialing *70 before dialing the number to
   temporarily disable CW.
 ........
................

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

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

By: Digium Subversion (svnbot) 2010-11-24 16:52:08.000-0600

Repository: asterisk
Revision: 296168

_U  trunk/
U   trunk/channels/chan_dahdi.c
U   trunk/channels/sig_analog.c
U   trunk/channels/sig_analog.h
U   trunk/channels/sig_pri.h

------------------------------------------------------------------------
r296168 | rmudgett | 2010-11-24 16:52:08 -0600 (Wed, 24 Nov 2010) | 64 lines

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

................
 r296167 | rmudgett | 2010-11-24 16:49:48 -0600 (Wed, 24 Nov 2010) | 57 lines
 
 Merged revisions 296166 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.6.2
 
 ................
   r296166 | rmudgett | 2010-11-24 16:42:45 -0600 (Wed, 24 Nov 2010) | 50 lines
   
   Merged revisions 296165 via svnmerge from
   https://origsvn.digium.com/svn/asterisk/branches/1.4
   
   ........
     r296165 | rmudgett | 2010-11-24 16:41:07 -0600 (Wed, 24 Nov 2010) | 43 lines
     
     Oneway audio to SIP phone from FXS port after FXS port gets a CallWaiting pip.
     
     The FXS connected phone has to have CW/CID support to fail, as it will
     send back a DTMF 'A' or 'D' when it's ready to receive CallerID.  A normal
     phone with no CID never fails.  Also the SIP phone does not hear MOH when
     the CW call is answered.
     
     The DTMF end frame is suppressed when the phone acknowledges the CW signal
     for CID.  The problem is the DTMF begin frame needs to be suppressed as
     well.  The DTMF begin frame is causing SIP to start sending the DTMF RTP
     frames.  Since the DTMF end frame is suppressed, SIP will not stop sending
     those DTMF RTP packets.
     
     * Suppress the DTMF begin and end frames when the channel driver is
     looking for DTMF digits.
     
     * Fixed a couple issues caused by not cleaning up the CID spill if you
     answer the CW call while it is sending the CID spill.
     
     * Fixed not sending CW/CID spill to the phone when the call is natively
     bridged.  (Fixed by not using native bridge if CW/CID is possible.)
     
     * Suppress received audio when sending CW/CID spills.  The other parties
     involved do not need to hear the CW/CID spills and may be confused if the
     CW call is for them.
     
     (closes issue ASTERISK-16803)
     Reported by: alecdavis
     Patches:
           issue_18129_v1.8_v3.patch uploaded by rmudgett (license 664)
     Tested by: alecdavis, rmudgett
     
     
     NOTE:
     
     * v1.4 does not have the main problem fixed by suppressing the DTMF start
     frames.  The other three items fixed are relevant.
     
     * If you really must restore native bridging between analog ports, you
     need to disable CW/CID either by configuring chan_dahdi.conf
     callwaitingcallerid=no or dialing *70 before dialing the number to
     temporarily disable CW.
   ........
 ................
................

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

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