[asterisk-bugs] [JIRA] (ASTERISK-17581) rtpkeepalive blocks incoming DTMF periodically

Sean Bright (JIRA) noreply at issues.asterisk.org
Fri Apr 23 19:24:09 CDT 2021


     [ https://issues.asterisk.org/jira/browse/ASTERISK-17581?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sean Bright updated ASTERISK-17581:
-----------------------------------

    Description: 
When {{rtpkeepalive}} is not zero then comfort noise packets are sent periodically. During sending of comfort noise packets incoming DTMF is not processed.

These DTMF tones are lost.

The Function {{ast_rtp_sendcng}} in {{rtp.c}} mutes DTMF for a certain period here:

{noformat}
rtp->dtmfmute = ast_tvadd(ast_tvnow(), ast_tv(0, 500000)); 
{noformat}

DTMF tones received during this period are not processed by Asterisk.

I verified the problem in Asterisk 1.4.40. The code 1.6.2.17.1 seems to be the same.

*Additional Info*

RTP debug. The first "5" DTMF tone is processed by Asterisk but the second "5" is ignored because Asterisk sends comfort noise.

{noformat}
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044204, ts 1634395254, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044204, ts 1634395254, len 000004, mark 1, event 00000005, end 0, duration 00000)
[Mar 19 09:38:28] DTMF[21798]: channel.c:2530 __ast_read: DTMF begin '5' received on SIP/xswitch-000003ba
[Mar 19 09:38:28] DTMF[21798]: channel.c:2534 __ast_read: DTMF begin ignored '5' on SIP/xswitch-000003ba
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004, mark 0, event 00000005, end 1, duration 01920)
[Mar 19 09:38:28] DTMF[21798]: channel.c:2449 __ast_read: DTMF end '5' received on SIP/xswitch-000003ba, duration 240 ms
[Mar 19 09:38:28] DTMF[21798]: channel.c:2515 __ast_read: DTMF end passthrough '5' on SIP/xswitch-000003ba
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004, mark 0, event 00000005, end 1, duration 01920)
Sent Comfort Noise RTP packet to 200.21.22.9:21196 (type 13, seq 30686, ts 0, len 1)
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044206, ts 1634397174, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044206, ts 1634397174, len 000004, mark 1, event 00000005, end 0, duration 00000)
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004, mark 0, event 00000005, end 1, duration 01680)
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004, mark 0, event 00000005, end 1, duration 01680)
{noformat}



  was:
When rtpkeepalive is not zero then comfort noise packets are sent periodically. During sending of comfort noise packets incoming DTMF is not processed.

These DMTF tones are lost.

The Function ast_rtp_sendcng in rtp.c mutes DTMF for a certain period here:
rtp->dtmfmute = ast_tvadd(ast_tvnow(), ast_tv(0, 500000)); 

DMTF tones received during this period are not processed by Asterisk. 

I verified the problem in Asterisk 1.4.40. The code 1.6.2.17.1 seems to be the same.

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

RTP debug. The first "5" DTMF tone is processed by Asterisk but the second "5" is ignored because Asterisk sends comfort noise.

Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044204, ts 1634395254, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044204, ts 1634395254, len 000004, mark 1, event 00000005, end 0, duration 00000)
[Mar 19 09:38:28] DTMF[21798]: channel.c:2530 __ast_read: DTMF begin '5' received on SIP/xswitch-000003ba
[Mar 19 09:38:28] DTMF[21798]: channel.c:2534 __ast_read: DTMF begin ignored '5' on SIP/xswitch-000003ba
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004, mark 0, event 00000005, end 1, duration 01920)
[Mar 19 09:38:28] DTMF[21798]: channel.c:2449 __ast_read: DTMF end '5' received on SIP/xswitch-000003ba, duration 240 ms
[Mar 19 09:38:28] DTMF[21798]: channel.c:2515 __ast_read: DTMF end passthrough '5' on SIP/xswitch-000003ba
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004, mark 0, event 00000005, end 1, duration 01920)
Sent Comfort Noise RTP packet to 200.21.22.9:21196 (type 13, seq 30686, ts 0, len 1)
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044206, ts 1634397174, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044206, ts 1634397174, len 000004, mark 1, event 00000005, end 0, duration 00000)
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004, mark 0, event 00000005, end 1, duration 01680)
Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004)
Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004, mark 0, event 00000005, end 1, duration 01680)



> rtpkeepalive blocks incoming DTMF periodically
> ----------------------------------------------
>
>                 Key: ASTERISK-17581
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-17581
>             Project: Asterisk
>          Issue Type: Bug
>          Components: Core/RTP
>    Affects Versions: 1.4.40, 13.18.4
>            Reporter: geejay
>            Severity: Major
>
> When {{rtpkeepalive}} is not zero then comfort noise packets are sent periodically. During sending of comfort noise packets incoming DTMF is not processed.
> These DTMF tones are lost.
> The Function {{ast_rtp_sendcng}} in {{rtp.c}} mutes DTMF for a certain period here:
> {noformat}
> rtp->dtmfmute = ast_tvadd(ast_tvnow(), ast_tv(0, 500000)); 
> {noformat}
> DTMF tones received during this period are not processed by Asterisk.
> I verified the problem in Asterisk 1.4.40. The code 1.6.2.17.1 seems to be the same.
> *Additional Info*
> RTP debug. The first "5" DTMF tone is processed by Asterisk but the second "5" is ignored because Asterisk sends comfort noise.
> {noformat}
> Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044204, ts 1634395254, len 000004)
> Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044204, ts 1634395254, len 000004, mark 1, event 00000005, end 0, duration 00000)
> [Mar 19 09:38:28] DTMF[21798]: channel.c:2530 __ast_read: DTMF begin '5' received on SIP/xswitch-000003ba
> [Mar 19 09:38:28] DTMF[21798]: channel.c:2534 __ast_read: DTMF begin ignored '5' on SIP/xswitch-000003ba
> Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004)
> Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004, mark 0, event 00000005, end 1, duration 01920)
> [Mar 19 09:38:28] DTMF[21798]: channel.c:2449 __ast_read: DTMF end '5' received on SIP/xswitch-000003ba, duration 240 ms
> [Mar 19 09:38:28] DTMF[21798]: channel.c:2515 __ast_read: DTMF end passthrough '5' on SIP/xswitch-000003ba
> Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004)
> Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044205, ts 1634395254, len 000004, mark 0, event 00000005, end 1, duration 01920)
> Sent Comfort Noise RTP packet to 200.21.22.9:21196 (type 13, seq 30686, ts 0, len 1)
> Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044206, ts 1634397174, len 000004)
> Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044206, ts 1634397174, len 000004, mark 1, event 00000005, end 0, duration 00000)
> Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004)
> Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004, mark 0, event 00000005, end 1, duration 01680)
> Got  RTP packet from    200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004)
> Got  RTP RFC2833 from   200.21.22.9:21196 (type 101, seq 044207, ts 1634397174, len 000004, mark 0, event 00000005, end 1, duration 01680)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list