[asterisk-bugs] [JIRA] (ASTERISK-27845) Codec-Change Re-INVITE during DTMF can cause marker bit error

Asterisk Team (JIRA) noreply at issues.asterisk.org
Wed Aug 8 10:07:02 CDT 2018


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

Asterisk Team updated ASTERISK-27845:
-------------------------------------

    Target Release Version/s: 16.0.0

> Codec-Change Re-INVITE during DTMF can cause marker bit error
> -------------------------------------------------------------
>
>                 Key: ASTERISK-27845
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-27845
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Resources/res_rtp_asterisk
>    Affects Versions: 13.20.0
>            Reporter: Torrey Searle
>            Assignee: Torrey Searle
>              Labels: patch
>      Target Release: 13.22.0, 15.5.0, 16.0.0
>
>         Attachments: codec_B.log, dtmf_reinvite_race.tgz, full.txt, patch
>
>
> There is a race condition between Codec changing re-invites and DTMF.
> If a call is transcoding (in simple_bridge) and during relaying a DTMF digit a RE-INVITE that caused a migration to native bridge arrives the marker bit could be set on the wrong packet.
> What happens is that re-invite arrives and the local bridge is activated.  At this time FLAG_NEED_MARKER_BIT gets set on the B leg by ast_rtp_local_bridge
> the A leg afterwards stops sending the DTMF and resumes sending audio.  This packet arrives into bridge_p2p_rtp_write  however as the B leg is still in the middle of the DTMF (it still has to send the 3 end frames) the function returns -1 and the packet is forwarded via the simple bridge with the old ssrc.  However despite this packet still being associated with the old source,  the FLAG_NEED_MARKER_BIT will get cleared in rtp_raw_write.
> When the next packet  of audio get sent by the A leg, it will be forwarded by the local bridge as the DTMF is over.  This will be the first RTP packet B receives with the SSRC of A but the marker bit won't be set because the flag has already been consumed by the previous packet



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



More information about the asterisk-bugs mailing list