res_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use.

This change makes it so that if an RTCP packet is being sent
the RTP ICE component is used for sending if RTCP-MUX is in use.

ASTERISK-27133

Change-Id: I6200f611ede709602ee9b89501720c29545ed68b
pull/9/head
Joshua Colp 8 years ago
parent 3fd1d520f7
commit 942ee54b53

@ -2650,9 +2650,15 @@ static int __rtp_sendto(struct ast_rtp_instance *instance, void *buf, size_t siz
#ifdef HAVE_PJPROJECT #ifdef HAVE_PJPROJECT
if (transport_rtp->ice) { if (transport_rtp->ice) {
enum ast_rtp_ice_component_type component = rtcp ? AST_RTP_ICE_COMPONENT_RTCP : AST_RTP_ICE_COMPONENT_RTP;
pj_status_t status; pj_status_t status;
struct ice_wrap *ice; struct ice_wrap *ice;
/* If RTCP is sharing the same socket then use the same component */
if (rtcp && rtp->rtcp->s == rtp->s) {
component = AST_RTP_ICE_COMPONENT_RTP;
}
pj_thread_register_check(); pj_thread_register_check();
/* Release the instance lock to avoid deadlock with PJPROJECT group lock */ /* Release the instance lock to avoid deadlock with PJPROJECT group lock */
@ -2661,8 +2667,7 @@ static int __rtp_sendto(struct ast_rtp_instance *instance, void *buf, size_t siz
if (instance == transport) { if (instance == transport) {
ao2_unlock(instance); ao2_unlock(instance);
} }
status = pj_ice_sess_send_data(ice->real_ice, status = pj_ice_sess_send_data(ice->real_ice, component, temp, len);
rtcp ? AST_RTP_ICE_COMPONENT_RTCP : AST_RTP_ICE_COMPONENT_RTP, temp, len);
ao2_ref(ice, -1); ao2_ref(ice, -1);
if (instance == transport) { if (instance == transport) {
ao2_lock(instance); ao2_lock(instance);

Loading…
Cancel
Save