X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain-afb-daemon.c;h=cb362a8b7a00b882f846a7eddc6e05155ec8c189;hb=refs%2Fchanges%2F51%2F16251%2F2;hp=f199681188f7f3dc3ebf58529afe0f4515777204;hpb=4772c5626204f6ab0e26b938f49a6719fb10f88d;p=src%2Fapp-framework-binder.git diff --git a/src/main-afb-daemon.c b/src/main-afb-daemon.c index f1996811..cb362a8b 100644 --- a/src/main-afb-daemon.c +++ b/src/main-afb-daemon.c @@ -52,6 +52,7 @@ #include "afb-session.h" #include "verbose.h" #include "afb-common.h" +#include "afb-export.h" #include "afb-monitor.h" #include "afb-hook.h" #include "afb-hook-flags.h" @@ -172,7 +173,7 @@ static void setup_daemon() +--------------------------------------------------------- */ static void daemonize() { - int fd, daemon; + int fd = 0, daemon; const char *output; pid_t pid; @@ -552,6 +553,7 @@ static struct afb_xreq_query_itf startup_xreq_itf = static void startup_call_current(struct startup_req *sreq) { const char *api, *verb, *json; + enum json_tokener_error jerr; sreq->callspec = json_object_get_string(json_object_array_get_idx(sreq->calls, sreq->index)), api = sreq->callspec; @@ -566,8 +568,8 @@ static void startup_call_current(struct startup_req *sreq) sreq->verb = strndup(verb + 1, json - verb - 1); sreq->xreq.request.called_api = sreq->api; sreq->xreq.request.called_verb = sreq->verb; - sreq->xreq.json = json_tokener_parse(json + 1); - if (sreq->api && sreq->verb && sreq->xreq.json) { + sreq->xreq.json = json_tokener_parse_verbose(json + 1, &jerr); + if (sreq->api && sreq->verb && jerr == json_tokener_success) { afb_xreq_process(&sreq->xreq, main_apiset); return; } @@ -603,6 +605,7 @@ static void start(int signum, void *arg) { const char *tracereq, *traceapi, *traceevt, *traceses, *tracesvc, *traceditf, *traceglob; const char *workdir, *rootdir, *token, *rootapi; + struct json_object *settings; struct afb_hsrv *hsrv; int max_session_count, session_timeout, api_timeout; int no_httpd, http_port; @@ -616,6 +619,7 @@ static void start(int signum, void *arg) exit(1); } + settings = NULL; token = rootapi = tracesvc = traceditf = tracereq = traceapi = traceevt = traceses = traceglob = NULL; no_httpd = http_port = 0; @@ -623,6 +627,7 @@ static void start(int signum, void *arg) "ss ss s?s" "si si si" "s?b s?i s?s" + "s?o" #if !defined(REMOVE_LEGACY_TRACE) "s?s s?s" #endif @@ -641,6 +646,7 @@ static void start(int signum, void *arg) "port", &http_port, "rootapi", &rootapi, + "set", &settings, #if !defined(REMOVE_LEGACY_TRACE) "tracesvc", &tracesvc, "traceditf", &traceditf, @@ -668,6 +674,7 @@ static void start(int signum, void *arg) } /* configure the daemon */ + afb_export_set_config(settings); if (afb_session_init(max_session_count, session_timeout, token)) { ERROR("initialisation of session manager failed"); goto error;