Skip to content
Snippets Groups Projects
Commit 9cc6f2c5 authored by Kinsey Moore's avatar Kinsey Moore
Browse files

Stop sending out RTCP if RTP is inactive

This change prevents Asterisk from sending RTCP receiver reports during a
remote bridge since it is no longer receiving media and should not be
reporting anything.

(related to ASTERISK-19366)
........

Merged revisions 360987 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 360993 from http://svn.asterisk.org/svn/asterisk/branches/10


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@360994 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent 6a540e90
No related branches found
No related tags found
No related merge requests found
......@@ -30402,16 +30402,48 @@ static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *i
 
if (instance) {
changed |= ast_rtp_instance_get_and_cmp_remote_address(instance, &p->redirip);
if (p->rtp) {
/* Prevent audio RTCP reads */
ast_channel_set_fd(chan, 1, -1);
/* Silence RTCP while audio RTP is inactive */
ast_rtp_instance_set_prop(p->rtp, AST_RTP_PROPERTY_RTCP, 0);
}
} else if (!ast_sockaddr_isnull(&p->redirip)) {
memset(&p->redirip, 0, sizeof(p->redirip));
changed = 1;
if (p->rtp) {
/* Enable RTCP since it will be inactive if we're coming back
* from a reinvite */
ast_rtp_instance_set_prop(p->rtp, AST_RTP_PROPERTY_RTCP, 1);
/* Enable audio RTCP reads */
ast_channel_set_fd(chan, 1, ast_rtp_instance_fd(p->rtp, 1));
}
}
if (vinstance) {
changed |= ast_rtp_instance_get_and_cmp_remote_address(vinstance, &p->vredirip);
if (p->vrtp) {
/* Prevent video RTCP reads */
ast_channel_set_fd(chan, 3, -1);
/* Silence RTCP while video RTP is inactive */
ast_rtp_instance_set_prop(p->vrtp, AST_RTP_PROPERTY_RTCP, 0);
}
} else if (!ast_sockaddr_isnull(&p->vredirip)) {
memset(&p->vredirip, 0, sizeof(p->vredirip));
changed = 1;
if (p->vrtp) {
/* Enable RTCP since it will be inactive if we're coming back
* from a reinvite */
ast_rtp_instance_set_prop(p->vrtp, AST_RTP_PROPERTY_RTCP, 1);
/* Enable video RTCP reads */
ast_channel_set_fd(chan, 3, ast_rtp_instance_fd(p->vrtp, 1));
}
}
if (tinstance) {
changed |= ast_rtp_instance_get_and_cmp_remote_address(tinstance, &p->tredirip);
} else if (!ast_sockaddr_isnull(&p->tredirip)) {
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment