diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 9fe886d047..7137a05bc9 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -3916,7 +3916,7 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s const char *rm_encoding; const switch_codec_implementation_t *mimp = NULL; int vmatch = 0, i; - + nm_idx = 0; m_idx = 0; memset(matches, 0, sizeof(matches[0]) * MAX_MATCHES); @@ -3991,7 +3991,7 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s if (!(rm_encoding = map->rm_encoding)) { rm_encoding = ""; } - + for (i = 0; i < total_codecs; i++) { const switch_codec_implementation_t *imp = codec_array[i]; @@ -4078,7 +4078,8 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s pmap->rm_fmtp = switch_core_session_strdup(session, (char *) map->rm_fmtp); pmap->agreed_pt = (switch_payload_t) map->rm_pt; - + + smh->negotiated_codecs[smh->num_negotiated_codecs++] = mimp; #if 0 if (j == 0 && (!switch_true(mirror) && switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND)) { @@ -5812,6 +5813,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_activate_rtp(switch_core_sessi video_up: if (session && v_engine) { + printf("WTFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF?????\n"); check_dtls_reinvite(session, v_engine); } diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 0761948c5a..ad93d8ee71 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -379,6 +379,7 @@ struct switch_rtp { switch_mutex_t *flag_mutex; switch_mutex_t *read_mutex; switch_mutex_t *write_mutex; + switch_mutex_t *ice_mutex; switch_timer_t timer; uint8_t ready; uint8_t cn; @@ -842,6 +843,8 @@ static void handle_ice(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice, void *d return; } + switch_mutex_lock(rtp_session->ice_mutex); + READ_INC(rtp_session); WRITE_INC(rtp_session); @@ -1213,7 +1216,7 @@ static void handle_ice(switch_rtp_t *rtp_session, switch_rtp_ice_t *ice, void *d end: - + switch_mutex_unlock(rtp_session->ice_mutex); READ_DEC(rtp_session); WRITE_DEC(rtp_session); } @@ -3499,6 +3502,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_create(switch_rtp_t **new_rtp_session switch_mutex_init(&rtp_session->flag_mutex, SWITCH_MUTEX_NESTED, pool); switch_mutex_init(&rtp_session->read_mutex, SWITCH_MUTEX_NESTED, pool); switch_mutex_init(&rtp_session->write_mutex, SWITCH_MUTEX_NESTED, pool); + switch_mutex_init(&rtp_session->ice_mutex, SWITCH_MUTEX_NESTED, pool); switch_mutex_init(&rtp_session->dtmf_data.dtmf_mutex, SWITCH_MUTEX_NESTED, pool); switch_queue_create(&rtp_session->dtmf_data.dtmf_queue, 100, rtp_session->pool); switch_queue_create(&rtp_session->dtmf_data.dtmf_inqueue, 100, rtp_session->pool); @@ -3947,7 +3951,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_activate_ice(switch_rtp_t *rtp_sessio switch_port_t port = 0; char bufc[30]; - READ_INC(rtp_session); + switch_mutex_lock(rtp_session->ice_mutex); if (proto == IPR_RTP) { ice = &rtp_session->ice; @@ -4016,7 +4020,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_activate_ice(switch_rtp_t *rtp_sessio switch_rtp_break(rtp_session); } - READ_DEC(rtp_session); + switch_mutex_unlock(rtp_session->ice_mutex); return SWITCH_STATUS_SUCCESS; } @@ -6630,11 +6634,13 @@ static int rtp_common_write(switch_rtp_t *rtp_session, srtp_dealloc(rtp_session->send_ctx[rtp_session->srtp_idx_rtp]); rtp_session->send_ctx[rtp_session->srtp_idx_rtp] = NULL; if ((stat = srtp_create(&rtp_session->send_ctx[rtp_session->srtp_idx_rtp], &rtp_session->send_policy[rtp_session->srtp_idx_rtp]))) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_ERROR, "Error! RE-Activating Secure RTP SEND\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_ERROR, + "Error! RE-Activating %s Secure RTP SEND\n", rtp_type(rtp_session)); ret = -1; goto end; } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_INFO, "RE-Activating Secure RTP SEND\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_INFO, + "RE-Activating %s Secure RTP SEND\n", rtp_type(rtp_session)); } } @@ -6642,7 +6648,8 @@ static int rtp_common_write(switch_rtp_t *rtp_session, stat = srtp_protect(rtp_session->send_ctx[rtp_session->srtp_idx_rtp], &send_msg->header, &sbytes); if (stat) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_ERROR, "Error: SRTP protection failed with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_ERROR, + "Error: %s SRTP protection failed with code %d\n", rtp_type(rtp_session), stat); } bytes = sbytes;