From c0ca33b8b2c011957de1476bbdcdf389b107feea Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 19 Jun 2014 20:29:26 +0200 Subject: [PATCH] descrambler: fix the service restart --- src/descrambler/descrambler.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/descrambler/descrambler.c b/src/descrambler/descrambler.c index 115c1d7e..8e2661d5 100755 --- a/src/descrambler/descrambler.c +++ b/src/descrambler/descrambler.c @@ -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