[asterisk-bugs] [JIRA] (ASTERISK-29373) res_rtp_asterisk: Flash events are duplicated

Joshua C. Colp (JIRA) noreply at issues.asterisk.org
Mon Mar 29 15:18:15 CDT 2021


    [ https://issues.asterisk.org/jira/browse/ASTERISK-29373?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=254371#comment-254371 ] 

Joshua C. Colp commented on ASTERISK-29373:
-------------------------------------------

As I've said before, you're in uncharted seldom used noone has given it a thought territory. Flash is rarely, if ever, sent through Asterisk.

I think though that introducing an AST_CONTROL_FLASH_END isn't really needed. It should be possible to change res_rtp_asterisk such that it only passes through a single flash event upon end - which is what the INFO implementation does. AST_CONTROL_FLASH is already effectively AST_CONTROL_FLASH_END.

The create_dtmf_frame already shows how to return a null frame and do nothing, it should be as simple as adding an if (type == AST_FRAME_DTMF_BEGIN) into the if (rtp->resp == 'X') block that returns &ast_null_frame.

> res_rtp_asterisk: Flash events are duplicated
> ---------------------------------------------
>
>                 Key: ASTERISK-29373
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-29373
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Resources/res_rtp_asterisk
>    Affects Versions: 18.3.0
>         Environment: Debian 10
>            Reporter: N A
>            Assignee: N A
>              Labels: patch
>         Attachments: res_rtp_asterisk.patch
>
>
> I noticed that for RFC2833 hook flash events, they were all getting duplicated. I found this is due to the way RFC2833 events work, where there is a start and end for each event. However, unlike DTMF events, for which there are beginning and end events, Asterisk has no notion of the beginning or end of a hook flash - there is only one hook flash (AST_CONTROL_FLASH). Thus, incoming RTP packets create duplicate flash events, which channel.c is not expecting. The attached patch fixes this bug by ensuring that only flash starts become AST_CONTROL_FLASH and flash end events are not duplicated, thus aligning what res_rtp_asterisk.c is doing with what channel.c expects.



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



More information about the asterisk-bugs mailing list