From b7c95330abcb0c3c6f954c2c479b25d6cbf85f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Wed, 1 Oct 2008 16:40:04 +0000 Subject: [PATCH] tvheadend: fix race condition during DVR stop procedure that could cause tvheadend to crash. --- dvr/dvr_rec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dvr/dvr_rec.c b/dvr/dvr_rec.c index 3769a145..edb52630 100644 --- a/dvr/dvr_rec.c +++ b/dvr/dvr_rec.c @@ -439,6 +439,8 @@ dvr_rec_stop(dvr_entry_t *de) { streaming_target_t *st = &de->de_st; + streaming_target_disconnect(&de->de_st); + pthread_mutex_lock(&st->st_mutex); if(st->st_status == ST_RUNNING) { @@ -450,6 +452,7 @@ dvr_rec_stop(dvr_entry_t *de) pthread_cond_wait(&st->st_cond, &st->st_mutex); } + pktref_clear_queue(&st->st_queue); pthread_mutex_unlock(&st->st_mutex); } @@ -498,9 +501,6 @@ dvr_thread(void *aux) dvr_thread_epilog(de); - streaming_target_disconnect(&de->de_st); - - pthread_mutex_lock(&global_lock); dvr_entry_dec_ref(de); /* Past this we may no longer dereference de */