mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	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
This commit is contained in:
		| @@ -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)) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user