Neil Horman ee4a52c
diff --git a/rngd_jitter.c b/rngd_jitter.c
Neil Horman ee4a52c
index 23d96b3..43a13e0 100644
Neil Horman ee4a52c
--- a/rngd_jitter.c
Neil Horman ee4a52c
+++ b/rngd_jitter.c
Neil Horman ee4a52c
@@ -473,26 +473,22 @@ void close_jitter_entropy_source(struct rng *ent_src)
Neil Horman ee4a52c
 	for (i=0; i < num_threads; i++)
Neil Horman ee4a52c
 		tdata[i].active = 0;
Neil Horman ee4a52c
 
Neil Horman ee4a52c
-	flags = fcntl(pipefds[1], F_GETFL, 0);
Neil Horman ee4a52c
-	flags |= O_NONBLOCK;
Neil Horman ee4a52c
-	fcntl(pipefds[1], F_SETFL, &flags);
Neil Horman ee4a52c
+	close(pipefds[1]);
Neil Horman ee4a52c
 
Neil Horman ee4a52c
 	/* And wait for completion of each thread */
Neil Horman ee4a52c
 	for (i=0; i < num_threads; i++) {
Neil Horman ee4a52c
 		message(LOG_DAEMON|LOG_DEBUG, "Checking on done for thread %d\n", i);
Neil Horman ee4a52c
 		while (!tdata[i].done)
Neil Horman ee4a52c
+			pthread_kill(threads[i], SIGINT);
Neil Horman ee4a52c
 			if(tdata[i].done) {
Neil Horman ee4a52c
 				message(LOG_DAEMON|LOG_INFO, "Closing thread %d\n", tdata[i].core_id);
Neil Horman ee4a52c
 				pthread_join(threads[i], NULL);
Neil Horman ee4a52c
 				jent_entropy_collector_free(tdata[i].ec);
Neil Horman ee4a52c
-			} else {
Neil Horman ee4a52c
-				read(pipefds[0], tmpbuf, 1024);
Neil Horman ee4a52c
+			} else 
Neil Horman ee4a52c
 				sched_yield();
Neil Horman ee4a52c
-			}
Neil Horman ee4a52c
 	}
Neil Horman ee4a52c
 
Neil Horman ee4a52c
-	close(pipefds[2]);
Neil Horman ee4a52c
-	close(pipefds[1]);
Neil Horman ee4a52c
+	close(pipefds[0]);
Neil Horman ee4a52c
 	free(tdata);
Neil Horman ee4a52c
 	free(threads);
Neil Horman ee4a52c
 	return;