Skip to content

Commit b1c033b

Browse files
committed
native service: Error checking on all methods initializing on luna service bus
1 parent bfff708 commit b1c033b

File tree

1 file changed

+30
-16
lines changed

1 file changed

+30
-16
lines changed

service/src/main.c

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ bool is_elevated()
2929
return (geteuid() == 0);
3030
}
3131

32+
bool is_running(pid_t pid)
33+
{
34+
return (pid > 0);
35+
}
36+
3237
char *daemon_cmdline(char *args)
3338
{
3439
char *tmp = (char *)calloc(1, FILENAME_MAX);
@@ -138,11 +143,6 @@ char *daemon_version_cmdline()
138143
return daemon_cmdline("--version");
139144
}
140145

141-
bool is_running(pid_t pid)
142-
{
143-
return (pid > 0);
144-
}
145-
146146
int daemon_start(service_t* service)
147147
{
148148
int res = 0;
@@ -387,24 +387,33 @@ int main()
387387
// create a GMainLoop
388388
gmainLoop = g_main_loop_new(NULL, FALSE);
389389

390-
bool registered = false;
390+
bool ret = false;
391391

392392
if (&LSRegisterPubPriv != 0) {
393-
registered = LSRegisterPubPriv(SERVICE_NAME, &handle, true, &lserror);
393+
ret = LSRegisterPubPriv(SERVICE_NAME, &handle, true, &lserror);
394394
} else {
395-
registered = LSRegister(SERVICE_NAME, &handle, &lserror);
395+
ret = LSRegister(SERVICE_NAME, &handle, &lserror);
396396
}
397397

398-
if (!registered) {
398+
if (!ret) {
399399
ERR("Unable to register on Luna bus: %s", lserror.message);
400-
LSErrorFree(&lserror);
401-
return -1;
400+
goto exit;
401+
}
402+
403+
if ((ret = LSRegisterCategory(handle, "/", methods, NULL, NULL, &lserror)) && !ret ) {
404+
ERR("Unable to register category on Luna bus: %s", lserror.message);
405+
goto exit;
402406
}
403407

404-
LSRegisterCategory(handle, "/", methods, NULL, NULL, &lserror);
405-
LSCategorySetData(handle, "/", &service, &lserror);
408+
if ((ret = LSCategorySetData(handle, "/", &service, &lserror)) && !ret ) {
409+
ERR("Unable to set category data on Luna bus: %s", lserror.message);
410+
goto exit;
411+
}
406412

407-
LSGmainAttach(handle, gmainLoop, &lserror);
413+
if ((ret = LSGmainAttach(handle, gmainLoop, &lserror)) && !ret ) {
414+
ERR("Unable to attach main loop: %s", lserror.message);
415+
goto exit;
416+
}
408417

409418
DBG("Going into main loop..");
410419

@@ -416,8 +425,13 @@ int main()
416425
DBG("Cleaning up service...");
417426
daemon_terminate(&service);
418427

419-
DBG("Unregistering service...");
420-
LSUnregister(handle, &lserror);
428+
exit:
429+
if (handle) {
430+
DBG("Unregistering service...");
431+
LSUnregister(handle, &lserror);
432+
}
433+
434+
LSErrorFree(&lserror);
421435

422436
// Decreases the reference count on a GMainLoop object by one
423437
g_main_loop_unref(gmainLoop);

0 commit comments

Comments
 (0)