diff --git a/src/service.c b/src/service.c index 1cb17b07..75ba4f7f 100644 --- a/src/service.c +++ b/src/service.c @@ -346,22 +346,30 @@ static int service_start(svc_t *svc) svc->pid = pid; svc->start_time = jiffies(); -#ifdef INETD_ENABLED - if (svc_is_inetd_conn(svc) && svc->inetd.type == SOCK_STREAM) - close(svc->stdin_fd); -#endif - - if (SVC_TYPE_RUN == svc->type) { + switch (svc->type) { + case SVC_TYPE_RUN: result = WEXITSTATUS(complete(svc->cmd, pid)); if (!svc_clean_bootstrap(svc)) { svc->start_time = svc->pid = 0; svc->once++; svc_set_state(svc, SVC_STOPPING_STATE); } - } + break; - if (svc_is_daemon(svc)) + case SVC_TYPE_SERVICE: pid_file_create(svc); + break; + +#ifdef INETD_ENABLED + case SVC_TYPE_INETD_CONN: + if (svc->inetd.type == SOCK_STREAM) + close(svc->stdin_fd); + break; +#endif + + default: + break; + } sigprocmask(SIG_SETMASK, &omask, NULL); if (do_progress)