#include "sd-fds.h"
#include "afb-debug.h"
#include "process-name.h"
+#include "afb-supervision.h"
/*
if SELF_PGROUP == 0 the launched command is the group leader
| job for starting the daemon
+--------------------------------------------------------- */
-static void start(int signum)
+static void start(int signum, void *arg)
{
struct afb_hsrv *hsrv;
exit(1);
}
- // ------------------ sanity check ----------------------------------------
- if (config->httpdPort <= 0) {
- ERROR("no port is defined");
- goto error;
- }
-
/* set the directories */
mkdir(config->workdir, S_IRWXU | S_IRGRP | S_IXGRP);
if (chdir(config->workdir) < 0) {
}
/* 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");
+ if (afb_session_init(config->nbSessionMax, config->cntxTimeout, config->token)) {
+ ERROR("initialisation of session manager failed");
goto error;
}
main_apiset = afb_apiset_create("main", config->apiTimeout);
ERROR("failed to setup monitor");
goto error;
}
+ if (afb_supervision_init() < 0) {
+ ERROR("failed to setup supervision");
+ goto error;
+ }
/* install hooks */
if (config->tracereq)
afb_debug("start-load");
apiset_start_list(config->so_bindings, afb_api_so_add_binding, "the binding");
apiset_start_list(config->dbus_clients, afb_api_dbus_add_client, "the afb-dbus client");
- apiset_start_list(config->ws_clients, afb_api_ws_add_client, "the afb-websocket client");
+ apiset_start_list(config->ws_clients, afb_api_ws_add_client_weak, "the afb-websocket client");
apiset_start_list(config->ldpaths, afb_api_so_add_pathset_fails, "the binding path set");
apiset_start_list(config->weak_ldpaths, afb_api_so_add_pathset_nofails, "the weak binding path set");
/* start the HTTP server */
afb_debug("start-http");
if (!config->noHttpd) {
+ if (config->httpdPort <= 0) {
+ ERROR("no port is defined");
+ goto error;
+ }
+
+ if (!afb_hreq_init_cookie(config->httpdPort, config->rootapi, config->cntxTimeout)) {
+ ERROR("initialisation of HTTP cookies failed");
+ goto error;
+ }
+
hsrv = start_http_server();
if (hsrv == NULL)
goto error;
afb_debug("main-start");
/* enter job processing */
- jobs_start(3, 0, 50, start);
+ jobs_start(3, 0, 50, start, NULL);
WARNING("hoops returned from jobs_enter! [report bug]");
return 1;
}