diff --git a/debian/changelog b/debian/changelog index 03bb43d..fb4bc59 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ applauncherd (0.25.2) unstable; urgency=low * Fixes: NB#240051 - applauncherd-launcher: please remove requests of DRM related token + * Fixes: NB#242533 - applauncherd.bin is terminated by SIGPIPE -- Jussi Lind Mon, 04 Apr 2011 16:24:15 +0300 diff --git a/src/launcherlib/daemon.cpp b/src/launcherlib/daemon.cpp index 19a5b91..c4c5eb8 100644 --- a/src/launcherlib/daemon.cpp +++ b/src/launcherlib/daemon.cpp @@ -235,6 +235,10 @@ void Daemon::run() enterBootMode(); break; + case SIGPIPE: + Logger::logDebug("Daemon: SIGPIPE received."); + break; + default: break; } @@ -402,6 +406,8 @@ void Daemon::forkBooster(char type, int sleepTime) signal(SIGCHLD, SIG_DFL); signal(SIGTERM, SIG_DFL); signal(SIGUSR1, SIG_DFL); + signal(SIGUSR2, SIG_DFL); + signal(SIGPIPE, SIG_DFL); // Will get this signal if applauncherd dies prctl(PR_SET_PDEATHSIG, SIGHUP); diff --git a/src/launcherlib/main.cpp b/src/launcherlib/main.cpp index b46a000..7c86c32 100644 --- a/src/launcherlib/main.cpp +++ b/src/launcherlib/main.cpp @@ -33,6 +33,7 @@ char g_pipeDataSigChld = SIGCHLD; char g_pipeDataSigTerm = SIGTERM; char g_pipeDataSigUsr1 = SIGUSR1; char g_pipeDataSigUsr2 = SIGUSR2; +char g_pipeDataSigPipe = SIGPIPE; static void sigChldHandler(int) { @@ -54,6 +55,11 @@ static void sigUsr2Handler(int) write(g_sigPipeFd, &g_pipeDataSigUsr2, 1); } +static void sigPipeHandler(int) +{ + write(g_sigPipeFd, &g_pipeDataSigPipe, 1); +} + //! Main function DECL_EXPORT int main(int argc, char * argv[]) { @@ -78,6 +84,7 @@ DECL_EXPORT int main(int argc, char * argv[]) signal(SIGTERM, sigTermHandler); // exit launcher signal(SIGUSR1, sigUsr1Handler); // enter normal mode from boot mode signal(SIGUSR2, sigUsr2Handler); // enter boot mode (same as --boot-mode) + signal(SIGPIPE, sigPipeHandler); // broken invoker's pipe // Run the main loop myDaemon.run();