mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 10:11:08 +00:00
5741ee38e0
g_signal_disconnect*() doesn't stop any existing callbacks from running which means that if the notify::state callback is in progress in one thread and the data channel object is finalize()ed in another thread, then there could be a use-after-free trying lock the data channel object. We can't reasonably use a GWeakRef as we don't have a 'parent' object to free the GWeakRef after the data channel is finalized. This is also complicated by the fact that the application can hold a reference to the data channel object that would live beyond the lifetime of webrtcbin itself. We solve this by implementing a ghetto weak-ref solution internally with a list of outstanding data channels. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1664> |
||
---|---|---|
.. | ||
datachannel.c | ||
datachannel.h | ||
dtlstransport.c | ||
dtlstransport.h | ||
icetransport.c | ||
icetransport.h | ||
meson.build | ||
rtcsessiondescription.c | ||
rtcsessiondescription.h | ||
rtpreceiver.c | ||
rtpreceiver.h | ||
rtpsender.c | ||
rtpsender.h | ||
rtptransceiver.c | ||
rtptransceiver.h | ||
sctptransport.c | ||
sctptransport.h | ||
webrtc-priv.h | ||
webrtc.c | ||
webrtc.h | ||
webrtc_fwd.h |