- INFO("API %s starting...", api->name);
- rc = start_array_classes(&api->require.classes, share_session);
- rc = start_array_depends(&api->require.apis, share_session);
- if (api->api.itf->service_start) {
- api->status = EBUSY;
- rc = api->api.itf->service_start(api->api.closure, share_session, onneed);
- if (rc < 0) {
- api->status = errno ?: ECANCELED;
- ERROR("The api %s failed to start (%d)", api->name, rc);
- return -1;
+ NOTICE("API %s starting...", api->name);
+ api->status = EBUSY;
+ rc = start_array_classes(&api->require.classes);
+ if (rc < 0)
+ ERROR("Cannot start classes needed by api %s", api->name);
+ else {
+ rc = start_array_depends(&api->require.apis);
+ if (rc < 0)
+ ERROR("Cannot start apis needed by api %s", api->name);
+ else if (api->api.itf->service_start) {
+ rc = api->api.itf->service_start(api->api.closure);
+ if (rc < 0)
+ ERROR("The api %s failed to start", api->name);