From 7fa2668adf377b1909907a22e3f27a479c4ddafa Mon Sep 17 00:00:00 2001 From: Philippe Normand Date: Tue, 6 Sep 2016 11:02:06 +0200 Subject: [PATCH] srtpenc: prevent deadlock in create_session Temporarily release the object lock which is needed to post error messages on the bus. https://bugzilla.gnome.org/show_bug.cgi?id=770933 --- ext/srtp/gstsrtpenc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ext/srtp/gstsrtpenc.c b/ext/srtp/gstsrtpenc.c index 7f46a4fda6..c9ae98070f 100644 --- a/ext/srtp/gstsrtpenc.c +++ b/ext/srtp/gstsrtpenc.c @@ -386,9 +386,11 @@ gst_srtp_enc_create_session (GstSrtpEnc * filter) gsize keysize; if (filter->key == NULL) { + GST_OBJECT_UNLOCK (filter); GST_ELEMENT_ERROR (filter, LIBRARY, SETTINGS, ("Cipher is not NULL, key must be set"), ("Cipher is not NULL, key must be set")); + GST_OBJECT_LOCK (filter); return err_status_fail; } @@ -396,10 +398,12 @@ gst_srtp_enc_create_session (GstSrtpEnc * filter) keysize = gst_buffer_get_size (filter->key); if (expected != keysize) { + GST_OBJECT_UNLOCK (filter); GST_ELEMENT_ERROR (filter, LIBRARY, SETTINGS, ("Master key size is wrong"), ("Expected master key of %d bytes, but received %" G_GSIZE_FORMAT " bytes", expected, keysize)); + GST_OBJECT_LOCK (filter); return err_status_fail; } }