|
|
|
|
@ -2259,7 +2259,7 @@ static void __dtls_logic(const sdp_ng_flags *flags,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void __ice_start(struct call_media *media) {
|
|
|
|
|
static void __ice_init(struct call_media *media) {
|
|
|
|
|
if (MEDIA_ISSET(media, PASSTHRU)) {
|
|
|
|
|
ice_shutdown(&media->ice_agent);
|
|
|
|
|
return;
|
|
|
|
|
@ -2637,6 +2637,16 @@ void codecs_offer_answer(struct call_media *media, struct call_media *other_medi
|
|
|
|
|
codecs_answer(media, other_media, sp, flags);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
__attribute__((nonnull(1)))
|
|
|
|
|
static void monologue_media_start(struct call_monologue *ml) {
|
|
|
|
|
for (unsigned int i = 0; i < ml->medias->len; i++) {
|
|
|
|
|
__auto_type media = ml->medias->pdata[i];
|
|
|
|
|
if (!media)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
ice_start(media->ice_agent);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* called with call->master_lock held in W */
|
|
|
|
|
__attribute__((nonnull(1)))
|
|
|
|
|
@ -2653,7 +2663,7 @@ static void __update_init_subscribers(struct call_media *media, struct stream_pa
|
|
|
|
|
if (flags && flags->block_short)
|
|
|
|
|
ML_SET(media->monologue, BLOCK_SHORT);
|
|
|
|
|
|
|
|
|
|
__ice_start(media);
|
|
|
|
|
__ice_init(media);
|
|
|
|
|
|
|
|
|
|
if (!__init_streams(media, sp, flags))
|
|
|
|
|
ilog(LOG_WARN, "Error setting stream flags");
|
|
|
|
|
@ -3968,6 +3978,9 @@ int monologue_offer_answer(struct call_monologue *monologues[2], sdp_streams_q *
|
|
|
|
|
monologue_bundle_set_sinks(sender_ml);
|
|
|
|
|
monologue_bundle_set_sinks(receiver_ml);
|
|
|
|
|
|
|
|
|
|
monologue_media_start(sender_ml);
|
|
|
|
|
monologue_media_start(receiver_ml);
|
|
|
|
|
|
|
|
|
|
// set ipv4/ipv6/mixed media stats
|
|
|
|
|
if (flags->opmode == OP_OFFER || flags->opmode == OP_ANSWER) {
|
|
|
|
|
statistics_update_ip46_inc_dec(receiver_ml->call, CMC_INCREMENT);
|
|
|
|
|
@ -4316,10 +4329,12 @@ int monologue_publish(struct call_monologue *ml, sdp_streams_q *streams, sdp_ng_
|
|
|
|
|
// XXX this should be covered by __update_init_subscribers ?
|
|
|
|
|
if (!__init_streams(media, sp, flags))
|
|
|
|
|
return -1;
|
|
|
|
|
__ice_start(media);
|
|
|
|
|
__ice_init(media);
|
|
|
|
|
ice_update(media->ice_agent, sp, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
monologue_media_start(ml);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -4440,6 +4455,9 @@ int monologue_subscribe_request(const subscription_q *srms, struct call_monologu
|
|
|
|
|
if (src_ml && src_ml->session_last_sdp_orig && !dst_ml->session_last_sdp_orig)
|
|
|
|
|
dst_ml->session_last_sdp_orig = sdp_orig_dup(src_ml->session_last_sdp_orig);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
monologue_media_start(dst_ml);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -4534,6 +4552,8 @@ int monologue_subscribe_answer(struct call_monologue *dst_ml, sdp_ng_flags *flag
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
monologue_media_start(dst_ml);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|