From ae33b348afa800447db9344cf6e5d082f1a1fcb3 Mon Sep 17 00:00:00 2001
From: Warren Dukes <warren.dukes@gmail.com>
Date: Sun, 11 Apr 2004 23:07:43 +0000
Subject: clean up signal handling using a polling method, from the genius that
 is mackstann

git-svn-id: https://svn.musicpd.org/mpd/trunk@697 09075e82-0dd4-0310-85a5-a0d7c8717e4f
---
 src/player.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

(limited to 'src/player.c')

diff --git a/src/player.c b/src/player.c
index 3bd6508ac..ecf7036f3 100644
--- a/src/player.c
+++ b/src/player.c
@@ -69,9 +69,11 @@ void resetPlayer() {
 
 void player_sigChldHandler(int pid, int status) {
 	if(player_pid==pid) {
-		if(WIFSIGNALED(status) && WTERMSIG(status)!=SIGTERM) {
-			ERROR("player process died from a "
-					"non-TERM signal: %i\n",
+		DEBUG("SIGCHLD caused by player process\n");
+		if(WIFSIGNALED(status) && WTERMSIG(status)!=SIGTERM &&
+				WTERMSIG(status)!=SIGINT) 
+		{
+			ERROR("player process died from signal: %i\n",
 					WTERMSIG(status));
 		}
 		resetPlayer();
@@ -100,12 +102,11 @@ int playerInit() {
 		sa.sa_flags = 0;
 		sigemptyset(&sa.sa_mask);
 
-		sa.sa_handler = SIG_IGN;
-		sigaction(SIGPIPE,&sa,NULL);
-		sigaction(SIGHUP,&sa,NULL);
+		finishSigHandlers();
 		sa.sa_handler = decodeSigHandler;
 		sigaction(SIGCHLD,&sa,NULL);
 		sigaction(SIGTERM,&sa,NULL);
+		sigaction(SIGINT,&sa,NULL);
 
 		close(listenSocket);
 		freeAllInterfaces();
-- 
cgit v1.2.3