summaryrefslogtreecommitdiff
path: root/ext/srtp/gstsrtpdec.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/srtp/gstsrtpdec.c')
-rw-r--r--ext/srtp/gstsrtpdec.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/srtp/gstsrtpdec.c b/ext/srtp/gstsrtpdec.c
index 4ecef543b..47ebfae0b 100644
--- a/ext/srtp/gstsrtpdec.c
+++ b/ext/srtp/gstsrtpdec.c
@@ -583,8 +583,13 @@ get_stream_from_caps (GstSrtpDec * filter, GstCaps * caps, guint32 ssrc)
goto error;
}
- if (stream->rtcp_cipher != SRTP_NULL_CIPHER &&
- stream->rtcp_auth == SRTP_NULL_AUTH) {
+ /* RFC 3711 says in "3. SRTP Framework" that SRTCP message authentication
+ * is MANDATORY. In case of GCM let the pipeline handle any errors.
+ */
+ if (stream->rtcp_cipher != GST_SRTP_CIPHER_AES_128_GCM
+ && stream->rtcp_cipher != GST_SRTP_CIPHER_AES_256_GCM
+ && stream->rtcp_cipher != GST_SRTP_CIPHER_NULL
+ && stream->rtcp_auth == GST_SRTP_AUTH_NULL) {
GST_WARNING_OBJECT (filter,
"Cannot have SRTP NULL authentication with a not-NULL encryption"
" cipher.");
@@ -930,6 +935,7 @@ update_session_stream_from_caps (GstSrtpDec * filter, guint32 ssrc,
err = init_session_stream (filter, ssrc, stream);
if (err != srtp_err_status_ok) {
+ GST_WARNING_OBJECT (filter, "Failed to create the stream (err: %d)", err);
if (stream->key)
gst_buffer_unref (stream->key);
g_slice_free (GstSrtpDecSsrcStream, stream);