+ /* install hooks */
+ if (config->tracereq)
+ afb_hook_create_xreq(NULL, NULL, NULL, config->tracereq, NULL, NULL);
+ if (config->traceditf)
+ afb_hook_create_ditf(NULL, config->traceditf, NULL, NULL);
+ if (config->tracesvc)
+ afb_hook_create_svc(NULL, config->tracesvc, NULL, NULL);
+ if (config->traceevt)
+ afb_hook_create_evt(NULL, config->traceevt, NULL, NULL);
+
+ /* load bindings */
+ afb_debug("start-load");
+ 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->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");
+ apiset_start_list(config->so_bindings, afb_api_so_add_binding, "the binding");
+
+ apiset_start_list(config->dbus_servers, afb_api_dbus_add_server, "the afb-dbus service");
+ apiset_start_list(config->ws_servers, afb_api_ws_add_server, "the afb-websocket service");
+
+ DEBUG("Init config done");
+
+ /* start the services */
+ afb_debug("start-start");
+#if !defined(NO_CALL_PERSONALITY)
+ personality((unsigned long)-1L);
+#endif
+ if (afb_apiset_start_all_services(main_apiset, 1) < 0)
+ goto error;
+
+ /* start the HTTP server */
+ afb_debug("start-http");
+ if (!config->noHttpd) {
+ hsrv = start_http_server();
+ if (hsrv == NULL)
+ goto error;