summaryrefslogtreecommitdiffstats
path: root/server.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2018-03-08 10:02:26 +0000
committerThomas Adam <thomas@xteddy.org>2018-03-08 10:02:26 +0000
commit9fd995275201893a604d15bb426e0f5a7f7971e6 (patch)
tree5680ec4fe61bc9a544507a402c6598ccd41f45d3 /server.c
parent3c451a64b59a20dac9be9455b02266ca575f4d3b (diff)
parent19f3a5c6120c5d845eb942e67413c03c0c008a87 (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'server.c')
-rw-r--r--server.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/server.c b/server.c
index f2799c1e..5aeb4ea6 100644
--- a/server.c
+++ b/server.c
@@ -243,6 +243,7 @@ server_loop(void)
{
struct client *c;
u_int items;
+ struct job *job;
do {
items = cmdq_next(NULL);
@@ -275,6 +276,11 @@ server_loop(void)
if (!TAILQ_EMPTY(&clients))
return (0);
+ LIST_FOREACH(job, &all_jobs, entry) {
+ if ((~job->flags & JOB_NOWAIT) && job->state == JOB_RUNNING)
+ return (0);
+ }
+
return (1);
}
@@ -290,8 +296,11 @@ server_send_exit(void)
TAILQ_FOREACH_SAFE(c, &clients, entry, c1) {
if (c->flags & CLIENT_SUSPENDED)
server_client_lost(c);
- else
+ else {
+ if (c->flags & CLIENT_ATTACHED)
+ notify_client("client-detached", c);
proc_send(c->peer, MSG_SHUTDOWN, -1, NULL, 0);
+ }
c->session = NULL;
}