summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <jsteffens@make.tv>2019-03-15 11:16:10 +0100
committerJan Alexander Steffens (heftig) <jsteffens@make.tv>2019-03-19 15:50:45 +0100
commit8ef4d01f603168757a96afb58f2355c5cbe0ae80 (patch)
tree5d3f2b4f333a4c03c68461a5a25cfd5b264ac572
parent24b0e3e55f2af8bbb32098cba7902717315ed406 (diff)
downloadgstreamer-plugins-bad-8ef4d01f603168757a96afb58f2355c5cbe0ae80.tar.gz
srtpdec: Simplify code flow handling status_key_expired
Ensures a balanced UNLOCK -> LOCK.
-rw-r--r--ext/srtp/gstsrtpdec.c37
1 files changed, 21 insertions, 16 deletions
diff --git a/ext/srtp/gstsrtpdec.c b/ext/srtp/gstsrtpdec.c
index 86730b35e..88d1cd4da 100644
--- a/ext/srtp/gstsrtpdec.c
+++ b/ext/srtp/gstsrtpdec.c
@@ -1387,23 +1387,28 @@ unprotect:
case srtp_err_status_ok:
/* success! */
break;
- case srtp_err_status_key_expired:
- /* Update stream */
- if (find_stream_by_ssrc (filter, ssrc)) {
- GST_OBJECT_UNLOCK (filter);
- if (request_key_with_signal (filter, ssrc, SIGNAL_HARD_LIMIT)) {
- GST_OBJECT_LOCK (filter);
- goto unprotect;
- } else {
- GST_OBJECT_LOCK (filter);
- GST_WARNING_OBJECT (filter, "Hard limit reached, no new key, "
- "dropping");
- }
- } else {
- GST_WARNING_OBJECT (filter, "Could not find matching stream, "
- "dropping");
+ case srtp_err_status_key_expired:{
+ GstSrtpDecSsrcStream *stream;
+
+ /* Check we have an existing stream to rekey */
+ stream = find_stream_by_ssrc (filter, ssrc);
+ if (stream == NULL) {
+ GST_WARNING_OBJECT (filter, "Could not find matching stream, dropping");
+ goto err;
}
- goto err;
+
+ GST_OBJECT_UNLOCK (filter);
+ stream = request_key_with_signal (filter, ssrc, SIGNAL_HARD_LIMIT);
+ GST_OBJECT_LOCK (filter);
+
+ /* Check we have a new stream for the key request */
+ if (stream == NULL) {
+ GST_WARNING_OBJECT (filter, "Hard limit reached, no new key, dropping");
+ goto err;
+ }
+
+ goto unprotect;
+ }
case srtp_err_status_auth_fail:
GST_WARNING_OBJECT (filter, "Error authentication packet, dropping");
goto err;