]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
descrambler: fix multipid descrambling (non-scrambled TS packets)
authorJaroslav Kysela <perex@perex.cz>
Wed, 29 Nov 2017 09:29:03 +0000 (10:29 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 29 Nov 2017 09:29:03 +0000 (10:29 +0100)
src/descrambler/descrambler.c

index 7ccadbe6f3188442ad2bf965b3a452e55abf8cfa..2b42810ca49de44644328a036ba583e56ff0a22b 100644 (file)
@@ -1095,14 +1095,20 @@ doit:
         service_reset_streaming_status_flags(t, TSS_NO_ACCESS);
 dd_destroy:
       descrambler_data_destroy(dr, dd, 0);
+      if (dr->dr_key_multipid) {
+        tk = key_find_struct(dr, tk, tsb, t);
+        if (tk == NULL) {
+          if ((tsb[3] & 0x80) == 0) {
+            ts_recv_packet0((mpegts_service_t *)t, st, tsb, len);
+            return 1;
+          }
+          goto next;
+        }
+      }
     }
 
     /* check for key change */
     ki = tsb[3];
-    if (dr->dr_key_multipid) {
-      tk = key_find_struct(dr, tk, tsb, t);
-      if (tk == NULL) goto next;
-    }
     if ((ki & 0x80) != 0x00) {
       if (key_valid(tk, ki) == 0) {
         if (!key_started(dr, ki) && tvhlog_limit(&dr->dr_loglimit_key, 10))