From abc075c4319ebda03ddcc2bfb4ff5d54596eb92d Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Sun, 11 Apr 2004 18:27:12 +0000 Subject: ok, fix some bug due to a child process dieing before the parent can even assign pid, thus we need to block CHLD signal around fork(); git-svn-id: https://svn.musicpd.org/mpd/trunk@694 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/decode.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/decode.c') diff --git a/src/decode.c b/src/decode.c index ae5e2fcb4..b5f7da213 100644 --- a/src/decode.c +++ b/src/decode.c @@ -25,6 +25,7 @@ #include "audio.h" #include "path.h" #include "log.h" +#include "sig_handlers.h" #ifdef HAVE_MAD #include "mp3_decode.h" @@ -216,10 +217,13 @@ int decoderInit(PlayerControl * pc, Buffer * cb, AudioFormat *af, int pid; int ret; decode_pid = &(pc->decode_pid); + + blockSignals(); pid = fork(); if(pid==0) { /* CHILD */ + unblockSignals(); while(1) { if(dc->start) { @@ -279,12 +283,15 @@ int decoderInit(PlayerControl * pc, Buffer * cb, AudioFormat *af, /* END OF CHILD */ } else if(pid<0) { + unblockSignals(); strncpy(pc->erroredFile,pc->file,MAXPATHLEN); pc->erroredFile[MAXPATHLEN] = '\0'; pc->error = PLAYER_ERROR_SYSTEM; return -1; } - else *decode_pid = pid; + + *decode_pid = pid; + unblockSignals(); return 0; } -- cgit v1.2.3