mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-28 20:05:38 +00:00
webrtcbin: only change the receive state after setting the dtls-client
Doing so before will cause SSL errors with fast-start implementations like Chrome or if media data arrives before an answer.
This commit is contained in:
parent
0a3f662ed6
commit
26a5cbddbb
1 changed files with 11 additions and 4 deletions
|
@ -3107,6 +3107,8 @@ _update_transceiver_from_sdp_media (GstWebRTCBin * webrtc,
|
|||
}
|
||||
|
||||
if (new_dir != prev_dir) {
|
||||
ReceiveState receive_state = 0;
|
||||
|
||||
GST_TRACE_OBJECT (webrtc, "transceiver direction change");
|
||||
|
||||
if (new_dir == GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDONLY ||
|
||||
|
@ -3163,17 +3165,22 @@ _update_transceiver_from_sdp_media (GstWebRTCBin * webrtc,
|
|||
_add_pad_to_list (webrtc, pad);
|
||||
}
|
||||
|
||||
transport_receive_bin_set_receive_state (stream->receive_bin,
|
||||
RECEIVE_STATE_PASS);
|
||||
receive_state = RECEIVE_STATE_PASS;
|
||||
} else if (!bundled) {
|
||||
transport_receive_bin_set_receive_state (stream->receive_bin,
|
||||
RECEIVE_STATE_DROP);
|
||||
receive_state = RECEIVE_STATE_DROP;
|
||||
}
|
||||
|
||||
if (!bundled || bundle_idx == media_idx)
|
||||
g_object_set (stream, "dtls-client",
|
||||
new_setup == GST_WEBRTC_DTLS_SETUP_ACTIVE, NULL);
|
||||
|
||||
/* Must be after setting the "dtls-client" so that data is not pushed into
|
||||
* the dtlssrtp elements before the ssl direction has been set which will
|
||||
* throw SSL errors */
|
||||
if (receive_state > 0)
|
||||
transport_receive_bin_set_receive_state (stream->receive_bin,
|
||||
receive_state);
|
||||
|
||||
rtp_trans->mline = media_idx;
|
||||
rtp_trans->current_direction = new_dir;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue