From 760592a29cebbaec3a3d20fabe4bf0220d84b2ad Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Fri, 30 Oct 2020 22:49:22 +1100 Subject: [PATCH] dtls: Avoid bio_buffer assertion on shutdown. On shutdown, a previous iteration of dtsl_connection_process() might be incomplete and leave a partial bio_buffer behind. If the DTLS connection is already marked closed, drop out of dtls_connection_process early without asserting. Part-of: --- ext/dtls/gstdtlsconnection.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ext/dtls/gstdtlsconnection.c b/ext/dtls/gstdtlsconnection.c index 22e0132307..1c8364a665 100644 --- a/ext/dtls/gstdtlsconnection.c +++ b/ext/dtls/gstdtlsconnection.c @@ -619,9 +619,8 @@ gst_dtls_connection_process (GstDtlsConnection * self, gpointer data, gsize len, g_mutex_lock (&priv->mutex); GST_TRACE_OBJECT (self, "locked @ process"); - g_warn_if_fail (!priv->bio_buffer); - - if (self->priv->received_close_notify) { + if (self->priv->received_close_notify + || self->priv->connection_state == GST_DTLS_CONNECTION_STATE_CLOSED) { GST_DEBUG_OBJECT (self, "Already received close_notify"); g_mutex_unlock (&priv->mutex); return GST_FLOW_EOS; @@ -637,6 +636,8 @@ gst_dtls_connection_process (GstDtlsConnection * self, gpointer data, gsize len, return GST_FLOW_ERROR; } + g_warn_if_fail (!priv->bio_buffer); + priv->bio_buffer = data; priv->bio_buffer_len = len; priv->bio_buffer_offset = 0;