gstreamer/ext/webrtc
Johan Sternerup 4d514abfd6 webrtcbin: Fix deadlock when receiving new sctp stream
When receiving an sctp message for a stream that not yet has an
sctpdec pad associated with it means we end up in
_on_sctpdec_pad_added. At this point we're holding the sctpassocation
lock. Then it's not possible to take the pc_lock because then code
executing under the pc_lock (which means anything in the webrtc
thread) may not take the sctpassociation lock. For example, running
the data channel close procedure from the webrtc thread means we
eventually end up sending a SCTP_RESET_STREAMS packet which needs to
grab the sctpassociation lock.

This means _on_sctpdec_pad_added simply cannot take the pc_lock and
also it is not possible to postpone the channel creation as we need to
link the pads right there. The solution is to introduce a more
granular dc_lock that protects only the things that needs to be done
to create the datachannel.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2186>
2021-05-12 03:02:27 +00:00
..
fwd.h webrtcbin: add support for data channels based on SCTP 2018-09-21 19:45:12 +10:00
gstwebrtc.c webrtcbin: an element that handles the transport aspects of webrtc connections 2018-02-02 15:02:21 +11:00
gstwebrtcbin.c webrtcbin: Fix deadlock when receiving new sctp stream 2021-05-12 03:02:27 +00:00
gstwebrtcbin.h webrtcbin: Fix deadlock when receiving new sctp stream 2021-05-12 03:02:27 +00:00
gstwebrtcice.c webrtc ice: Add 'min/max-rtp-port' props for setting RTP port range 2021-03-01 14:42:17 +00:00
gstwebrtcice.h webrtc ice: Add 'min/max-rtp-port' props for setting RTP port range 2021-03-01 14:42:17 +00:00
gstwebrtcstats.c webrtc/stats: provide the twcc stats when available 2021-04-29 22:01:54 +10:00
gstwebrtcstats.h webrtcbin: Implement getting stats for a specific pad 2020-11-24 04:27:52 +00:00
icestream.c webrtc ice: Add 'min/max-rtp-port' props for setting RTP port range 2021-03-01 14:42:17 +00:00
icestream.h webrtcbin: an element that handles the transport aspects of webrtc connections 2018-02-02 15:02:21 +11:00
meson.build webrtc: Update libnice version requirement to 0.1.17 2020-11-11 13:41:59 +02:00
nicetransport.c Fix missing unref of nice-agent causing sockets to never close. 2021-04-22 21:14:49 +00:00
nicetransport.h webrtc: Add properties to change the socket buffer sizes to ice object 2020-11-03 22:07:53 +00:00
sctptransport.c webrtcbin: Support closing of data channels 2021-05-12 03:02:27 +00:00
sctptransport.h webrtc: Set the DSCP markings based on the priority 2020-10-30 16:24:40 -04:00
transportreceivebin.c Use gst_element_request_pad_simple... 2021-05-05 06:17:14 +00:00
transportreceivebin.h webrtc: Remove RECEIVE_STATE_DROP from transportreceivebin 2020-03-04 10:15:19 +00:00
transportsendbin.c webrtcbin: Remove remnant of non-rtcp-mux mode 2021-01-06 23:02:37 +00:00
transportsendbin.h webrtcbin: Remove remnant of non-rtcp-mux mode 2021-01-06 23:02:37 +00:00
transportstream.c webrtcbin: Remove remnant of non-rtcp-mux mode 2021-01-06 23:02:37 +00:00
transportstream.h webrtcbin: Remove remnant of non-rtcp-mux mode 2021-01-06 23:02:37 +00:00
utils.c webrtc: only add nack pli by default if kind is video 2021-05-06 12:19:51 +00:00
utils.h webrtc: move webrtc_kind_from_caps() to utils 2021-05-06 12:19:51 +00:00
webrtcdatachannel.c webrtcbin: Support closing of data channels 2021-05-12 03:02:27 +00:00
webrtcdatachannel.h webrtcbin: Support closing of data channels 2021-05-12 03:02:27 +00:00
webrtcsdp.c webrtc: propagate more errors through the promise 2020-09-14 04:04:29 +00:00
webrtcsdp.h webrtc: propagate more errors through the promise 2020-09-14 04:04:29 +00:00
webrtctransceiver.c webrtc: expose transport property on sender and receiver 2021-01-13 19:22:42 +00:00
webrtctransceiver.h webrtcbin: Remember if a transceiver had a forced m-line 2021-04-12 17:55:07 -04:00