]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
descrambler: fix the service restart
authorJaroslav Kysela <perex@perex.cz>
Thu, 19 Jun 2014 18:29:26 +0000 (20:29 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 19 Jun 2014 18:29:26 +0000 (20:29 +0200)
src/descrambler/descrambler.c

index 115c1d7e512c5a26f7111f0b5767acad2efab453..8e2661d56eaffae8888a2d0aa622f9e5941c9931 100755 (executable)
@@ -130,6 +130,11 @@ descrambler_done ( void )
 #endif
 }
 
+/*
+ * This routine is called from two places
+ * a) start a new service
+ * b) restart a running service with possible caid changes
+ */
 void
 descrambler_service_start ( service_t *t )
 {
@@ -141,10 +146,12 @@ descrambler_service_start ( service_t *t )
 #if ENABLE_CAPMT
   capmt_service_start(t);
 #endif
-  t->s_descramble = dr = calloc(1, sizeof(th_descrambler_runtime_t));
-  sbuf_init(&dr->dr_buf);
-  dr->dr_key_index = 0xff;
-  dr->dr_last_descramble = dispatch_clock;
+  if (t->s_descramble == NULL) {
+    t->s_descramble = dr = calloc(1, sizeof(th_descrambler_runtime_t));
+    sbuf_init(&dr->dr_buf);
+    dr->dr_key_index = 0xff;
+    dr->dr_last_descramble = dispatch_clock;
+  }
 }
 
 void