mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-28 03:00:35 +00:00
tests/webrtc: fix racy test with a prenegotiated data channel
If both data channels become ready simultaneously, then the two integer read-add-update cycles can execute concurrently and only ever increment once instead of the required twice. Use an atomic add instead.
This commit is contained in:
parent
be011d2086
commit
979daea7f2
2 changed files with 5 additions and 3 deletions
|
@ -75,8 +75,9 @@ struct _GstWebRTCDataChannelClass
|
|||
};
|
||||
|
||||
void gst_webrtc_data_channel_start_negotiation (GstWebRTCDataChannel *channel);
|
||||
void gst_webrtc_data_channel_set_sctp_transport (GstWebRTCDataChannel *channel,
|
||||
GstWebRTCSCTPTransport *sctp);
|
||||
G_GNUC_INTERNAL
|
||||
void gst_webrtc_data_channel_link_to_sctp (GstWebRTCDataChannel *channel,
|
||||
GstWebRTCSCTPTransport *sctp_transport);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
@ -1899,8 +1899,9 @@ _on_ready_state_notify (GObject * channel, GParamSpec * pspec,
|
|||
g_object_get (channel, "ready-state", &ready_state, NULL);
|
||||
|
||||
if (ready_state == GST_WEBRTC_DATA_CHANNEL_STATE_OPEN) {
|
||||
if (++(*n_ready) >= 2)
|
||||
if (g_atomic_int_add (n_ready, 1) >= 1) {
|
||||
test_webrtc_signal_state (t, STATE_CUSTOM);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue