From d1b065b5e557cafab691a5da47b503e45f86a314 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Tue, 24 Aug 2010 20:46:44 +0200 Subject: [PATCH] Use childhandle() in dirplex too. --- src/dirplex.c | 33 ++------------------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/src/dirplex.c b/src/dirplex.c index 6dccff5..c612c15 100644 --- a/src/dirplex.c +++ b/src/dirplex.c @@ -37,9 +37,6 @@ #include #include -#define CH_SOCKET 0 -#define CH_FORK 1 - #define PAT_BASENAME 0 #define PAT_PATHNAME 1 #define PAT_ALL 2 @@ -337,29 +334,6 @@ out: return(pat); } -static void forkchild(struct child *ch) -{ - ch->fd = stdmkchild(ch->argv); -} - -static void passreq(struct child *ch, struct hthead *req, int fd) -{ - if(ch->fd < 0) - forkchild(ch); - if(sendreq(ch->fd, req, fd)) { - if(errno == EPIPE) { - /* Assume that the child has crashed and restart it. */ - forkchild(ch); - if(!sendreq(ch->fd, req, fd)) - return; - } - flog(LOG_ERR, "could not pass on request to child %s: %s", ch->name, strerror(errno)); - close(ch->fd); - ch->fd = -1; - simpleerror(fd, 500, "Server Error", "The request handler crashed."); - } -} - static void handlefile(struct hthead *req, int fd, char *path) { struct pattern *pat; @@ -376,11 +350,8 @@ static void handlefile(struct hthead *req, int fd, char *path) return; } - if(ch->type == CH_SOCKET) { - passreq(ch, req, fd); - } else if(ch->type == CH_FORK) { - stdforkserve(ch->argv, req, fd); - } + if(childhandle(ch, req, fd)) + simpleerror(fd, 500, "Server Error", "The request handler crashed."); } static void handledir(struct hthead *req, int fd, char *path) -- 2.11.0