The forked process inherits connmand's signal mask and thus has TERM and
INT blocked. As a consequence it can not be killed properly if the signal
mask is not reset.
#include <unistd.h>
#include <stdarg.h>
#include <sys/wait.h>
+#include <signal.h>
#include <glib.h>
static void task_setup(gpointer user_data)
{
+ sigset_t mask;
struct connman_task *task = user_data;
DBG("task %p", task);
+
+ sigemptyset(&mask);
+ if (sigprocmask(SIG_SETMASK, &mask, NULL) < 0)
+ connman_error("Failed to clean signal mask");
}
/**