From 72385abda940862a920442a330fb6aa82673400f Mon Sep 17 00:00:00 2001 From: Jose Bollo Date: Wed, 5 Sep 2018 14:25:50 +0200 Subject: [PATCH] main-afb-daemon: Export API after initialization Exporting API after initialization is a simple technic to avoid interleaving of incoming foreign calls during initialisation. Also a tiny fix in jobs.c and afb-socket.c. Bug-AGL: SPEC-1724 Change-Id: I59596256481c8afcd88755ec303bf7f881b55c12 Signed-off-by: Jose Bollo --- src/afb-socket.c | 2 +- src/jobs.c | 2 +- src/main-afb-daemon.c | 10 +++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/afb-socket.c b/src/afb-socket.c index ebbc58ec..77b5edf8 100644 --- a/src/afb-socket.c +++ b/src/afb-socket.c @@ -217,7 +217,7 @@ static int open_systemd(const char *spec) { #if defined(NO_SYSTEMD_ACTIVATION) errno = EAFNOSUPPORT; - fd = -1; + return -1; #else return afb_systemd_fds_for(spec); #endif diff --git a/src/jobs.c b/src/jobs.c index a6357c87..9768f269 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -160,7 +160,7 @@ static struct job *job_create( job = malloc(sizeof *job); pthread_mutex_lock(&mutex); if (!job) { - errno = -ENOMEM; + errno = ENOMEM; goto end; } } diff --git a/src/main-afb-daemon.c b/src/main-afb-daemon.c index 06aeb58d..77d7ab29 100644 --- a/src/main-afb-daemon.c +++ b/src/main-afb-daemon.c @@ -761,15 +761,13 @@ static void start(int signum, void *arg) if (traceglob) afb_hook_create_global(afb_hook_flags_global_from_text(traceglob), NULL, NULL); - /* load bindings */ + /* load bindings and apis */ afb_debug("start-load"); apiset_start_list("binding", afb_api_so_add_binding, "the binding"); 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"); - apiset_start_list("ws-server", afb_api_ws_add_server, "the afb-websocket service"); #if defined(WITH_DBUS_TRANSPARENCY) - apiset_start_list("dbus-server", afb_api_dbus_add_server, "the afb-dbus service"); 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"); @@ -784,6 +782,12 @@ static void start(int signum, void *arg) if (afb_apiset_start_all_services(main_apiset) < 0) goto error; + /* export started apis */ + apiset_start_list("ws-server", afb_api_ws_add_server, "the afb-websocket service"); +#if defined(WITH_DBUS_TRANSPARENCY) + apiset_start_list("dbus-server", afb_api_dbus_add_server, "the afb-dbus service"); +#endif + /* start the HTTP server */ afb_debug("start-http"); if (!no_httpd) { -- 2.16.6