summaryrefslogtreecommitdiffstats
path: root/server-fn.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2009-08-07 15:39:10 +0000
committerNicholas Marriott <nicm@openbsd.org>2009-08-07 15:39:10 +0000
commite89e70e71575417195285a3ea55c430654f9fc21 (patch)
tree7b2693e599d1137fa818a6ec8330a299de536c4d /server-fn.c
parentccaf8724e4c5f1909c8eaf62963ded1265a271b2 (diff)
If there is an error in the configuration file, don't just exit(1) as this can
cause the client to hang. Instead, send the error message, then mark the client as bad and start a normal shutdown so the server exits once the error is written. This also allows some code duplicating daemon(3) to be trimmed and logging to begin earlier. Prompted by Theo noticing the behaviour on error wasn't documented.
Diffstat (limited to 'server-fn.c')
-rw-r--r--server-fn.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/server-fn.c b/server-fn.c
index 8a4b1f1d..83ef6ca8 100644
--- a/server-fn.c
+++ b/server-fn.c
@@ -62,6 +62,8 @@ server_write_client(
{
struct hdr hdr;
+ if (c->flags & CLIENT_BAD)
+ return;
log_debug("writing %d to client %d", type, c->fd);
hdr.type = type;