]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
tcp_server_done: improve shutdown locking (clang sanitizer)
authorJaroslav Kysela <perex@perex.cz>
Thu, 10 Mar 2016 17:55:51 +0000 (18:55 +0100)
committerJaroslav Kysela <perex@perex.cz>
Thu, 10 Mar 2016 17:55:51 +0000 (18:55 +0100)
src/tcp.c

index 6513bcc2e3ab90c97792ddbe68361f19e70edecd..03e1505a5ce3328e51a498791d102c45d726c62c 100644 (file)
--- a/src/tcp.c
+++ b/src/tcp.c
@@ -1115,14 +1115,15 @@ tcp_server_done(void)
   tvh_pipe_close(&tcp_server_pipe);
   tvhpoll_destroy(tcp_server_poll);
   
+  pthread_mutex_lock(&global_lock);
   t = mclk();
   while (LIST_FIRST(&tcp_server_active) != NULL) {
     if (t + sec2mono(5) < mclk())
       tvhtrace("tcp", "tcp server %p active too long", LIST_FIRST(&tcp_server_active));
+    pthread_mutex_unlock(&global_lock);
     tvh_safe_usleep(20000);
+    pthread_mutex_lock(&global_lock);
   }
-
-  pthread_mutex_lock(&global_lock);
   while ((tsl = LIST_FIRST(&tcp_server_join)) != NULL) {
     LIST_REMOVE(tsl, jlink);
     pthread_mutex_unlock(&global_lock);