]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
descrambler: move the key change code to proper location
authorJaroslav Kysela <perex@perex.cz>
Mon, 8 Dec 2014 19:39:21 +0000 (20:39 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 8 Dec 2014 19:39:21 +0000 (20:39 +0100)
src/descrambler/descrambler.c

index 6c690ffd09e06331c7ad8be0f7819a4875da0c1e..b97c25d4ee7daac4d15fcc6c1f3897ae174c1770 100755 (executable)
@@ -371,6 +371,16 @@ descrambler_descramble ( service_t *t,
     }
     if (td->td_keystate != DS_RESOLVED)
       continue;
+
+    if (dr->dr_key_changed) {
+      dr->dr_csa.csa_flush(&dr->dr_csa, (mpegts_service_t *)td->td_service);
+      if (dr->dr_key_changed & 1)
+        tvhcsa_set_key_even(&dr->dr_csa, dr->dr_key_even);
+      if (dr->dr_key_changed & 2)
+        tvhcsa_set_key_odd(&dr->dr_csa, dr->dr_key_odd);
+      dr->dr_key_changed = 0;
+    }
+
     if (dr->dr_buf.sb_ptr > 0) {
       for (off = 0, size = dr->dr_buf.sb_ptr; off < size; off += 188) {
         tsb2 = dr->dr_buf.sb_data + off;
@@ -404,15 +414,6 @@ descrambler_descramble ( service_t *t,
       sbuf_free(&dr->dr_buf);
     }
 
-    if (dr->dr_key_changed) {
-      dr->dr_csa.csa_flush(&dr->dr_csa, (mpegts_service_t *)td->td_service);
-      if (dr->dr_key_changed & 1)
-        tvhcsa_set_key_even(&dr->dr_csa, dr->dr_key_even);
-      if (dr->dr_key_changed & 2)
-        tvhcsa_set_key_odd(&dr->dr_csa, dr->dr_key_odd);
-      dr->dr_key_changed = 0;
-    }
-
     ki = tsb[3];
     if ((ki & 0x80) != 0x00) {
       if (key_valid(dr, ki) == 0) {