main-afb-daemon: Export API after initialization 69/16469/2
authorJose Bollo <jose.bollo@iot.bzh>
Wed, 5 Sep 2018 12:25:50 +0000 (14:25 +0200)
committerJose Bollo <jose.bollo@iot.bzh>
Wed, 5 Sep 2018 15:04:51 +0000 (17:04 +0200)
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 <jose.bollo@iot.bzh>
src/afb-socket.c
src/jobs.c
src/main-afb-daemon.c

index ebbc58e..77b5edf 100644 (file)
@@ -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
index a6357c8..9768f26 100644 (file)
@@ -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;
                }
        }
index 06aeb58..77d7ab2 100644 (file)
@@ -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) {