X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain-afb-daemon.c;h=a85ffc0a6af69cec2249951511e7969bb5b2fba3;hb=2ba7c200c6c4844b63f8f707a6f04017661f16ca;hp=4ef4b28014a42e0316029d8878b8b7700555a090;hpb=84f4aec41817417a3b94d91da1b9b2fba9711e40;p=src%2Fapp-framework-binder.git diff --git a/src/main-afb-daemon.c b/src/main-afb-daemon.c index 4ef4b280..a85ffc0a 100644 --- a/src/main-afb-daemon.c +++ b/src/main-afb-daemon.c @@ -43,7 +43,7 @@ #include "afb-apiset.h" #include "afb-autoset.h" #include "afb-api-so.h" -#if defined(WITH_DBUS_TRANSPARENCY) +#if WITH_DBUS_TRANSPARENCY # include "afb-api-dbus.h" #endif #include "afb-api-ws.h" @@ -60,7 +60,7 @@ #include "afb-hook-flags.h" #endif #include "afb-debug.h" -#if defined(WITH_SUPERVISION) +#if WITH_SUPERVISION # include "afb-supervision.h" #endif @@ -399,6 +399,17 @@ static struct afb_hsrv *start_http_server() | execute_command +--------------------------------------------------------- */ +static void wait_child_and_exit() +{ + pid_t pidchld = childpid; + + childpid = 0; + if (!SELF_PGROUP) + killpg(pidchld, SIGKILL); + waitpid(pidchld, NULL, 0); + exit(0); +} + static void on_sigchld(int signum, siginfo_t *info, void *uctx) { if (info->si_pid == childpid) { @@ -406,11 +417,9 @@ static void on_sigchld(int signum, siginfo_t *info, void *uctx) case CLD_EXITED: case CLD_KILLED: case CLD_DUMPED: - childpid = 0; - if (!SELF_PGROUP) - killpg(info->si_pid, SIGKILL); - waitpid(info->si_pid, NULL, 0); - exit(0); + jobs_exit(wait_child_and_exit); + default: + break; } } } @@ -796,7 +805,7 @@ static void start(int signum, void *arg) ERROR("failed to setup monitor"); goto error; } -#if defined(WITH_SUPERVISION) +#if WITH_SUPERVISION if (afb_supervision_init(main_apiset, main_config) < 0) { ERROR("failed to setup supervision"); goto error; @@ -830,7 +839,7 @@ static void start(int signum, void *arg) apiset_start_list("ldpaths", afb_api_so_add_pathset_fails, "the binding path set"); apiset_start_list("weak-ldpaths", afb_api_so_add_pathset_nofails, "the weak binding path set"); apiset_start_list("auto-api", afb_autoset_add_any, "the automatic api path set"); -#if defined(WITH_DBUS_TRANSPARENCY) +#if WITH_DBUS_TRANSPARENCY apiset_start_list("dbus-client", afb_api_dbus_add_client, "the afb-dbus client"); #endif apiset_start_list("ws-client", afb_api_ws_add_client_weak, "the afb-websocket client"); @@ -847,7 +856,7 @@ static void start(int signum, void *arg) /* export started apis */ apiset_start_list("ws-server", afb_api_ws_add_server, "the afb-websocket service"); -#if defined(WITH_DBUS_TRANSPARENCY) +#if WITH_DBUS_TRANSPARENCY apiset_start_list("dbus-server", afb_api_dbus_add_server, "the afb-dbus service"); #endif