X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.c;h=b9328687c9354e00110c2eb89ee2a990f9adb62b;hb=052c3aee6362b2e33c060e0fbddd68439bb73dcb;hp=b5d92814d765fd3bffd449e399e89950386bc86b;hpb=3634c468ec7de94f6911c532a606625418fa5133;p=src%2Fapp-framework-binder.git diff --git a/src/main.c b/src/main.c index b5d92814..b9328687 100644 --- a/src/main.c +++ b/src/main.c @@ -17,9 +17,10 @@ */ #define _GNU_SOURCE -#define NO_BINDING_VERBOSE_MACRO +#define AFB_BINDING_PRAGMA_NO_VERBOSE_MACRO #include +#include #include #include #include @@ -45,6 +46,7 @@ #include "afb-session.h" #include "verbose.h" #include "afb-common.h" +#include "afb-monitor.h" #include "afb-hook.h" #include "sd-fds.h" @@ -111,7 +113,6 @@ static void exit_handler() killpg(0, SIGTERM); else if (childpid > 0) killpg(childpid, SIGTERM); - exit(0); } static void on_sigterm(int signum, siginfo_t *info, void *uctx) @@ -446,11 +447,11 @@ struct startup_req struct afb_session *session; }; -static void startup_call_reply(struct afb_xreq *xreq, int iserror, struct json_object *obj) +static void startup_call_reply(struct afb_xreq *xreq, int status, struct json_object *obj) { struct startup_req *sreq = CONTAINER_OF_XREQ(struct startup_req, xreq); - if (!iserror) + if (status >= 0) NOTICE("startup call %s returned %s", sreq->current->value, json_object_get_string(obj)); else { ERROR("startup call %s ERROR! %s", sreq->current->value, json_object_get_string(obj)); @@ -528,10 +529,15 @@ static void run_startup_calls() | job for starting the daemon +--------------------------------------------------------- */ -static void start() +static void start(int signum) { struct afb_hsrv *hsrv; + if (signum) { + ERROR("start aborted: received signal %s", strsignal(signum)); + exit(1); + } + // ------------------ sanity check ---------------------------------------- if (config->httpdPort <= 0) { ERROR("no port is defined"); @@ -550,14 +556,18 @@ static void start() } /* configure the daemon */ + afb_session_init(config->nbSessionMax, config->cntxTimeout, config->token); + if (!afb_hreq_init_cookie(config->httpdPort, config->rootapi, config->cntxTimeout)) { + ERROR("initialisation of cookies failed"); + goto error; + } main_apiset = afb_apiset_create("main", config->apiTimeout); if (!main_apiset) { ERROR("can't create main api set"); goto error; } - afb_session_init(config->nbSessionMax, config->cntxTimeout, config->token); - if (!afb_hreq_init_cookie(config->httpdPort, config->rootapi, config->cntxTimeout)) { - ERROR("initialisation of cookies failed"); + if (afb_monitor_init() < 0) { + ERROR("failed to setup monitor"); goto error; } @@ -566,6 +576,10 @@ static void start() afb_hook_create_xreq(NULL, NULL, NULL, config->tracereq, NULL, NULL); if (config->traceditf) afb_hook_create_ditf(NULL, config->traceditf, NULL, NULL); + if (config->tracesvc) + afb_hook_create_svc(NULL, config->tracesvc, NULL, NULL); + if (config->traceevt) + afb_hook_create_evt(NULL, config->traceevt, NULL, NULL); /* load bindings */ apiset_start_list(config->dbus_clients, afb_api_dbus_add_client, "the afb-dbus client");