#include "afb-apiset.h"
#include "afb-autoset.h"
#include "afb-api-so.h"
-#if defined(WITH_DBUS_TRANSPARENCY)
+#if WITH_DBUS_TRANSPARENCY
# include "afb-api-dbus.h"
#endif
#include "afb-api-ws.h"
#include "afb-hook-flags.h"
#endif
#include "afb-debug.h"
-#if defined(WITH_SUPERVISION)
+#if WITH_SUPERVISION
# include "afb-supervision.h"
#endif
}
if (afb_hreq_init_download_path(uploaddir)) {
- ERROR("unable to set the upload directory %s", uploaddir);
- return NULL;
+ static const char fallback_uploaddir[] = "/tmp";
+ WARNING("unable to set the upload directory %s", uploaddir);
+ if (afb_hreq_init_download_path(fallback_uploaddir)) {
+ ERROR("unable to fallback to upload directory %s", fallback_uploaddir);
+ return NULL;
+ }
}
hsrv = afb_hsrv_create();
| execute_command
+--------------------------------------------------------- */
+static void wait_child_and_exit()
+{
+ pid_t pidchld = childpid;
+
+ childpid = 0;
+ if (!SELF_PGROUP)
+ killpg(pidchld, SIGKILL);
+ waitpid(pidchld, NULL, 0);
+ exit(0);
+}
+
static void on_sigchld(int signum, siginfo_t *info, void *uctx)
{
if (info->si_pid == childpid) {
case CLD_EXITED:
case CLD_KILLED:
case CLD_DUMPED:
- childpid = 0;
- if (!SELF_PGROUP)
- killpg(info->si_pid, SIGKILL);
- waitpid(info->si_pid, NULL, 0);
- exit(0);
+ jobs_exit(wait_child_and_exit);
+ default:
+ break;
}
}
}
ERROR("failed to setup monitor");
goto error;
}
-#if defined(WITH_SUPERVISION)
+#if WITH_SUPERVISION
if (afb_supervision_init(main_apiset, main_config) < 0) {
ERROR("failed to setup supervision");
goto error;
/* load bindings and apis */
afb_debug("start-load");
+#if WITH_DYNAMIC_BINDING
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");
+#endif
apiset_start_list("auto-api", afb_autoset_add_any, "the automatic api path set");
-#if defined(WITH_DBUS_TRANSPARENCY)
+#if WITH_DBUS_TRANSPARENCY
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");
/* export started apis */
apiset_start_list("ws-server", afb_api_ws_add_server, "the afb-websocket service");
-#if defined(WITH_DBUS_TRANSPARENCY)
+#if WITH_DBUS_TRANSPARENCY
apiset_start_list("dbus-server", afb_api_dbus_add_server, "the afb-dbus service");
#endif
afb_debug("main-start");
/* enter job processing */
- jobs_start(3, 0, 50, start, NULL);
+ jobs_start(3, 0, 100, start, NULL);
WARNING("hoops returned from jobs_enter! [report bug]");
return 1;
}