From d346e7560682a824caf38add63cb3a55164de808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= Date: Mon, 12 Aug 2013 12:27:33 -0400 Subject: [PATCH] srtp: Let packets through without touching them if no crypto or auth is set --- ext/srtp/gstsrtpdec.c | 6 ++++++ ext/srtp/gstsrtpenc.c | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ext/srtp/gstsrtpdec.c b/ext/srtp/gstsrtpdec.c index 2c4c7275bd..41efb1dde6 100644 --- a/ext/srtp/gstsrtpdec.c +++ b/ext/srtp/gstsrtpdec.c @@ -858,6 +858,11 @@ gst_srtp_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf, goto drop_buffer; } + if (!STREAM_HAS_CRYPTO (stream)) { + GST_OBJECT_UNLOCK (filter); + goto push_out; + } + GST_LOG_OBJECT (pad, "Received %s buffer of size %" G_GSIZE_FORMAT " with SSRC = %u", is_rtcp ? "RTCP" : "RTP", gst_buffer_get_size (buf), ssrc); @@ -925,6 +930,7 @@ unprotect: if (gst_srtp_get_soft_limit_reached ()) request_key_with_signal (filter, ssrc, SIGNAL_SOFT_LIMIT); +push_out: /* Push buffer to source pad */ otherpad = (GstPad *) gst_pad_get_element_private (pad); ret = gst_pad_push (otherpad, buf); diff --git a/ext/srtp/gstsrtpenc.c b/ext/srtp/gstsrtpenc.c index 8ce2a6bc41..ddd5661126 100644 --- a/ext/srtp/gstsrtpenc.c +++ b/ext/srtp/gstsrtpenc.c @@ -938,8 +938,6 @@ gst_srtp_enc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf, GST_OBJECT_LOCK (filter); - size_max = gst_buffer_get_size (buf) + SRTP_MAX_TRAILER_LEN + 10; - /* Update source caps if asked */ if (do_setcaps) { GstCaps *caps; @@ -956,7 +954,15 @@ gst_srtp_enc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf, GST_OBJECT_LOCK (filter); } + if (!HAS_CRYPTO (filter)) { + GST_OBJECT_UNLOCK (filter); + otherpad = get_rtp_other_pad (pad); + return gst_pad_push (otherpad, buf); + } + + /* Create a bigger buffer to add protection */ + size_max = gst_buffer_get_size (buf) + SRTP_MAX_TRAILER_LEN + 10; bufout = gst_buffer_new_allocate (NULL, size_max, NULL); gst_buffer_map (buf, &mapin, GST_MAP_READ);