mirror of
https://github.com/pygos/init.git
synced 2024-11-22 11:19:45 +01:00
Keep original respawn limit
We also want this meachanism to still work for manually started service (especially after reloading services). Signed-off-by: David Oberhollenzer <goliath@infraroot.at>
This commit is contained in:
parent
be06641904
commit
c8c0f10ce1
2 changed files with 4 additions and 5 deletions
|
@ -82,9 +82,9 @@ static void handle_terminated_service(service_t *svc)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (svc->rspwn_limit > 0) {
|
if (svc->rspwn_limit > 0) {
|
||||||
svc->rspwn_limit -= 1;
|
svc->rspwn_count += 1;
|
||||||
|
|
||||||
if (svc->rspwn_limit == 0) {
|
if (svc->rspwn_count >= svc->rspwn_limit) {
|
||||||
print_status(svc->desc, STATUS_FAIL, false);
|
print_status(svc->desc, STATUS_FAIL, false);
|
||||||
goto out_failure;
|
goto out_failure;
|
||||||
}
|
}
|
||||||
|
@ -319,9 +319,7 @@ void supervisor_start(int id)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
found:
|
found:
|
||||||
if (svc->type == SVC_RESPAWN)
|
svc->rspwn_count = 0;
|
||||||
svc->rspwn_limit = 0;
|
|
||||||
|
|
||||||
svc->flags &= ~SVC_FLAG_ADMIN_STOPPED;
|
svc->flags &= ~SVC_FLAG_ADMIN_STOPPED;
|
||||||
svc->next = queue;
|
svc->next = queue;
|
||||||
queue = svc;
|
queue = svc;
|
||||||
|
|
|
@ -56,6 +56,7 @@ typedef struct service_t {
|
||||||
char *desc; /* description string */
|
char *desc; /* description string */
|
||||||
char *ctty; /* controlling tty or log file */
|
char *ctty; /* controlling tty or log file */
|
||||||
int rspwn_limit; /* maximum respawn count */
|
int rspwn_limit; /* maximum respawn count */
|
||||||
|
int rspwn_count; /* services respawn counter */
|
||||||
unsigned int flags; /* SVC_FLAG_* bit field */
|
unsigned int flags; /* SVC_FLAG_* bit field */
|
||||||
|
|
||||||
/* linked list of command lines to execute */
|
/* linked list of command lines to execute */
|
||||||
|
|
Loading…
Reference in a new issue