summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/afb-api-so-v1.c4
-rw-r--r--src/afb-svc.c8
2 files changed, 7 insertions, 5 deletions
diff --git a/src/afb-api-so-v1.c b/src/afb-api-so-v1.c
index f4562ec5..f367820d 100644
--- a/src/afb-api-so-v1.c
+++ b/src/afb-api-so-v1.c
@@ -96,7 +96,8 @@ static int service_start_cb(void *closure, int share_session, int onneed, struct
/* get the initialisation */
init = dlsym(desc->handle, afb_api_so_v1_service_init);
- if (init == NULL) {
+ onevent = dlsym(desc->handle, afb_api_so_v1_service_event);
+ if (init == NULL && onevent == NULL) {
/* not an error when onneed */
if (onneed != 0)
return 0;
@@ -107,7 +108,6 @@ static int service_start_cb(void *closure, int share_session, int onneed, struct
}
/* get the event handler if any */
- onevent = dlsym(desc->handle, afb_api_so_v1_service_event);
desc->service = afb_svc_create_v1(apiset, share_session, init, onevent);
if (desc->service == NULL) {
/* starting error */
diff --git a/src/afb-svc.c b/src/afb-svc.c
index b4032e32..b492520c 100644
--- a/src/afb-svc.c
+++ b/src/afb-svc.c
@@ -194,9 +194,11 @@ struct afb_svc *afb_svc_create_v1(
}
/* initialises the svc now */
- rc = start(to_afb_service(svc));
- if (rc < 0)
- goto error;
+ if (start) {
+ rc = start(to_afb_service(svc));
+ if (rc < 0)
+ goto error;
+ }
return svc;