|
|
|
|
@ -2458,15 +2458,17 @@ int monologue_offer_answer(struct call_monologue *other_ml, GQueue *streams,
|
|
|
|
|
&& other_media->protocol && other_media->protocol->rtp)
|
|
|
|
|
media->protocol = flags->transport_protocol;
|
|
|
|
|
|
|
|
|
|
/* copy parameters advertised by the sender of this message */
|
|
|
|
|
bf_copy_same(&other_media->media_flags, &sp->sp_flags,
|
|
|
|
|
SHARED_FLAG_RTCP_MUX | SHARED_FLAG_ASYMMETRIC | SHARED_FLAG_ICE
|
|
|
|
|
| SHARED_FLAG_TRICKLE_ICE | SHARED_FLAG_ICE_LITE);
|
|
|
|
|
|
|
|
|
|
crypto_params_copy(&other_media->sdes_in.params, &sp->crypto);
|
|
|
|
|
other_media->sdes_in.tag = sp->sdes_tag;
|
|
|
|
|
if (other_media->sdes_in.params.crypto_suite)
|
|
|
|
|
MEDIA_SET(other_media, SDES);
|
|
|
|
|
if (sp->rtp_endpoint.port) {
|
|
|
|
|
/* copy parameters advertised by the sender of this message */
|
|
|
|
|
bf_copy_same(&other_media->media_flags, &sp->sp_flags,
|
|
|
|
|
SHARED_FLAG_RTCP_MUX | SHARED_FLAG_ASYMMETRIC | SHARED_FLAG_ICE
|
|
|
|
|
| SHARED_FLAG_TRICKLE_ICE | SHARED_FLAG_ICE_LITE);
|
|
|
|
|
|
|
|
|
|
crypto_params_copy(&other_media->sdes_in.params, &sp->crypto);
|
|
|
|
|
other_media->sdes_in.tag = sp->sdes_tag;
|
|
|
|
|
if (other_media->sdes_in.params.crypto_suite)
|
|
|
|
|
MEDIA_SET(other_media, SDES);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
__rtp_payload_types(media, &sp->rtp_payload_types);
|
|
|
|
|
|
|
|
|
|
@ -2476,22 +2478,24 @@ int monologue_offer_answer(struct call_monologue *other_ml, GQueue *streams,
|
|
|
|
|
bf_copy(&other_media->media_flags, MEDIA_FLAG_RECV, &sp->sp_flags, SP_FLAG_SEND);
|
|
|
|
|
bf_copy(&other_media->media_flags, MEDIA_FLAG_SEND, &sp->sp_flags, SP_FLAG_RECV);
|
|
|
|
|
|
|
|
|
|
/* DTLS stuff */
|
|
|
|
|
__dtls_logic(flags, media, other_media, sp);
|
|
|
|
|
if (sp->rtp_endpoint.port) {
|
|
|
|
|
/* DTLS stuff */
|
|
|
|
|
__dtls_logic(flags, media, other_media, sp);
|
|
|
|
|
|
|
|
|
|
/* control rtcp-mux */
|
|
|
|
|
__rtcp_mux_logic(flags, media, other_media);
|
|
|
|
|
/* control rtcp-mux */
|
|
|
|
|
__rtcp_mux_logic(flags, media, other_media);
|
|
|
|
|
|
|
|
|
|
/* SDES and DTLS */
|
|
|
|
|
__generate_crypto(flags, media, other_media);
|
|
|
|
|
/* SDES and DTLS */
|
|
|
|
|
__generate_crypto(flags, media, other_media);
|
|
|
|
|
|
|
|
|
|
/* deduct address family from stream parameters received */
|
|
|
|
|
other_media->desired_family = family_from_address(&sp->rtp_endpoint.ip46);
|
|
|
|
|
/* for outgoing SDP, use "direction"/DF or default to what was offered */
|
|
|
|
|
if (!media->desired_family)
|
|
|
|
|
media->desired_family = other_media->desired_family;
|
|
|
|
|
if (sp->desired_family)
|
|
|
|
|
media->desired_family = sp->desired_family;
|
|
|
|
|
/* deduct address family from stream parameters received */
|
|
|
|
|
other_media->desired_family = family_from_address(&sp->rtp_endpoint.ip46);
|
|
|
|
|
/* for outgoing SDP, use "direction"/DF or default to what was offered */
|
|
|
|
|
if (!media->desired_family)
|
|
|
|
|
media->desired_family = other_media->desired_family;
|
|
|
|
|
if (sp->desired_family)
|
|
|
|
|
media->desired_family = sp->desired_family;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* local interface selection */
|
|
|
|
|
__init_interface(media, &sp->direction[1]);
|
|
|
|
|
|