summaryrefslogtreecommitdiffstats
path: root/server.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2017-04-20 12:01:14 +0100
committerThomas Adam <thomas@xteddy.org>2017-04-20 12:01:14 +0100
commit48371216df07c588180b8e2246930a96e94de62b (patch)
treeb7fe5d01adee8885d766616fcea5ff41d773ec01 /server.c
parente30f9dc1fae848d659295a9dfab0a5e0cf4e1a46 (diff)
parent21993105e53da0f5aae583b494c83f1cbbf48b1b (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'server.c')
-rw-r--r--server.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/server.c b/server.c
index 24e3ab61..0d8179fe 100644
--- a/server.c
+++ b/server.c
@@ -133,7 +133,8 @@ server_create_socket(void)
int
server_start(struct event_base *base, int lockfd, char *lockfile)
{
- int pair[2];
+ int pair[2];
+ struct job *job;
if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pair) != 0)
fatal("socketpair failed");
@@ -179,6 +180,12 @@ server_start(struct event_base *base, int lockfd, char *lockfile)
server_add_accept(0);
proc_loop(server_proc, server_loop);
+
+ LIST_FOREACH(job, &all_jobs, entry) {
+ if (job->pid != -1)
+ kill(job->pid, SIGTERM);
+ }
+
status_prompt_save_history();
exit(0);
}
@@ -399,7 +406,7 @@ server_child_exited(pid_t pid, int status)
}
}
- LIST_FOREACH(job, &all_jobs, lentry) {
+ LIST_FOREACH(job, &all_jobs, entry) {
if (pid == job->pid) {
job_died(job, status); /* might free job */
break;