X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.c;h=dbfbac5d455b96e661b94b4803b591530589dafa;hb=06382af9092babedbf56aa1c00b3bd7cb0b86cda;hp=81f891b362d39e2e971425ab0b198b3570eff9f9;hpb=d50bd20d0a95a87f4308bdd908f3d54aa0a01a5f;p=src%2Fapp-framework-binder.git diff --git a/src/main.c b/src/main.c index 81f891b3..dbfbac5d 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 "IoT.bzh" + * Copyright (C) 2015, 2016 "IoT.bzh" * Author "Fulup Ar Foll" * Author José Bollo * @@ -20,17 +20,11 @@ #include #include -#include #include #include #include #include -#include - #include -#include -#include -#include #include @@ -42,11 +36,12 @@ #include "afb-hsrv.h" #include "afb-context.h" #include "afb-hreq.h" +#include "afb-sig-handler.h" #include "session.h" #include "verbose.h" #include "afb-common.h" -#include "afb-plugin.h" +#include #if !defined(PLUGIN_INSTALL_DIR) #error "you should define PLUGIN_INSTALL_DIR" @@ -127,8 +122,6 @@ static AFB_options cliOptions [] = { {0, 0, NULL, NULL} }; - - /*---------------------------------------------------------- | printversion | print version and copyright @@ -138,7 +131,7 @@ static void printVersion (FILE *file) fprintf(file, "\n----------------------------------------- \n"); fprintf(file, " AFB [Application Framework Binder] version=%s |\n", AFB_VERSION); fprintf(file, " \n"); - fprintf(file, " Copyright(C) 2016 /IoT.bzh [fulup -at- iot.bzh]\n"); + fprintf(file, " Copyright (C) 2015, 2016 \"IoT.bzh\" [fulup -at- iot.bzh]\n"); fprintf(file, " AFB comes with ABSOLUTELY NO WARRANTY.\n"); fprintf(file, " Licence Apache 2\n\n"); exit (0); @@ -428,49 +421,6 @@ static void closeSession (int status, void *data) { /* struct afb_config *config = data; */ } -/*---------------------------------------------------------- - | timeout signalQuit - +--------------------------------------------------------- */ -void signalQuit (int signum) -{ - ERROR("Terminating signal received %s", strsignal(signum)); - exit(1); -} - -/*---------------------------------------------------------- - | Error signals - | - +--------------------------------------------------------- */ -__thread sigjmp_buf *error_handler; -static void signalError(int signum) -{ - sigset_t sigset; - - // unlock signal to allow a new signal to come - if (error_handler != NULL) { - sigemptyset(&sigset); - sigaddset(&sigset, signum); - sigprocmask(SIG_UNBLOCK, &sigset, 0); - longjmp(*error_handler, signum); - } - if (signum == SIGALRM) - return; - ERROR("Unmonitored signal received %s", strsignal(signum)); - exit(2); -} - -static void install_error_handlers() -{ - int i, signals[] = { SIGALRM, SIGSEGV, SIGFPE, 0 }; - - for (i = 0; signals[i] != 0; i++) { - if (signal(signals[i], signalError) == SIG_ERR) { - ERROR("Signal handler error"); - exit(1); - } - } -} - /*---------------------------------------------------------- | daemonize | set the process in background @@ -620,8 +570,7 @@ int main(int argc, char *argv[]) { struct afb_config *config; struct sd_event *eventloop; - // open syslog if ever needed - openlog("afb-daemon", 0, LOG_DAEMON); + LOGAUTH("afb-daemon"); // ------------- Build session handler & init config ------- config = calloc (1, sizeof (struct afb_config)); @@ -647,11 +596,8 @@ int main(int argc, char *argv[]) { exit (1); } - install_error_handlers(); - - // ------------------ clean exit on CTR-C signal ------------------------ - if (signal (SIGINT, signalQuit) == SIG_ERR || signal (SIGABRT, signalQuit) == SIG_ERR) { - ERROR("main fail to install Signal handler"); + if (afb_sig_handler_init() < 0) { + ERROR("main fail to initialise signal handlers"); return 1; }