Selaa lähdekoodia

sem_wait can be interrupted by signal. Handle interruption properly.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2920 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 15 vuotta sitten
vanhempi
commit
b8af7c3764
1 muutettua tiedostoa jossa 12 lisäystä ja 1 poistoa
  1. 12 1
      exec/logsys.c

+ 12 - 1
exec/logsys.c

@@ -661,7 +661,18 @@ static void *logsys_worker_thread (void *data)
 	sem_post (&logsys_thread_start);
 	for (;;) {
 		dropped = 0;
-		sem_wait (&logsys_print_finished);
+retry_sem_wait:
+		res = sem_wait (&logsys_print_finished);
+		if (res == -1 && errno == EINTR) {
+			goto retry_sem_wait;
+		} else
+		if (res == -1) {
+			/*
+  			 * This case shouldn't happen
+  			 */
+			pthread_exit (NULL);
+		}
+		
 
 		logsys_wthread_lock();
 		if (wthread_should_exit) {