Handle failed generator startup as a fatal startup, sending listener a shutdown message and adding shutdown parsing
This commit is contained in:
parent
2b1f9510cf
commit
4ab9120e61
13
src/ckpool.c
13
src/ckpool.c
@ -29,10 +29,12 @@ static void *listener(void *arg)
|
||||
{
|
||||
proc_instance_t *pi = (proc_instance_t *)arg;
|
||||
unixsock_t *us = &pi->us;
|
||||
char *buf = NULL;
|
||||
int sockd;
|
||||
|
||||
rename_proc(pi->sockname);
|
||||
retry:
|
||||
dealloc(buf);
|
||||
sockd = accept(us->sockd, NULL, NULL);
|
||||
if (sockd < 0) {
|
||||
if (interrupted())
|
||||
@ -41,9 +43,16 @@ retry:
|
||||
goto out;
|
||||
}
|
||||
/* Insert parsing and repeat code here */
|
||||
out:
|
||||
if (sockd >= 0)
|
||||
buf = recv_unix_msg(sockd);
|
||||
if (!strncasecmp(buf, "shutdown", 8)) {
|
||||
LOGWARNING("Listener received shutdown message, terminating ckpool");
|
||||
close(sockd);
|
||||
goto out;
|
||||
}
|
||||
close(sockd);
|
||||
goto retry;
|
||||
out:
|
||||
dealloc(buf);
|
||||
close_unix_socket(us->sockd, us->path);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -147,5 +147,9 @@ out:
|
||||
dealloc(userpass);
|
||||
|
||||
LOGINFO("%s generator exiting with return code %d", ckp->name, ret);
|
||||
if (ret) {
|
||||
send_proc(&ckp->main, "shutdown");
|
||||
sleep(1);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user