summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2000-09-13 10:43:26 +1100
committerDamien Miller <djm@mindrot.org>2000-09-13 10:43:26 +1100
commitf384c366d33cb435627743f7ea0ed3f966543d40 (patch)
tree70aeb21714ae4b80454c4ee6e08e93117cec3387
parentbac2d8aa5e642a70045e713853b13d020b9c5d57 (diff)
- (djm) Fix server not exiting with jobs in background.
-rw-r--r--ChangeLog3
-rw-r--r--serverloop.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6b112b6c..fa9b472c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+20000913
+ - (djm) Fix server not exiting with jobs in background.
+
20000905
- (djm) Import OpenBSD CVS changes
- markus@cvs.openbsd.org 2000/08/31 15:52:24
diff --git a/serverloop.c b/serverloop.c
index 00617bb8..8c17c0d5 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -86,6 +86,7 @@ sigchld_handler2(int sig)
int save_errno = errno;
debug("Received SIGCHLD.");
child_terminated = 1;
+ child_has_selected = 0;
errno = save_errno;
}
@@ -652,6 +653,8 @@ server_loop2(void)
signal(SIGCHLD, sigchld_handler2);
}
channel_after_select(&readset, &writeset);
+ if (child_terminated && child_has_selected)
+ break;
process_input(&readset);
process_output(&writeset);
}