Dolda2000 GitWeb
/
ashd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lib: Fixed obvious memory leak in simpleerror.
[ashd.git]
/
lib
/
cf.c
diff --git
a/lib/cf.c
b/lib/cf.c
index
719fcad
..
fd53c54
100644
(file)
--- a/
lib/cf.c
+++ b/
lib/cf.c
@@
-326,16
+326,16
@@
struct child *parsechild(struct cfstate *s)
return(ch);
}
return(ch);
}
-int childhandle(struct child *ch, struct hthead *req, int fd)
+int childhandle(struct child *ch, struct hthead *req, int fd
, void (*chinit)(void *), void *idata
)
{
if(ch->type == CH_SOCKET) {
if(ch->fd < 0)
{
if(ch->type == CH_SOCKET) {
if(ch->fd < 0)
- ch->fd = stdmkchild(ch->argv);
+ ch->fd = stdmkchild(ch->argv
, chinit, idata
);
if(sendreq(ch->fd, req, fd)) {
if(sendreq(ch->fd, req, fd)) {
- if(
errno == EPIPE
) {
+ if(
(errno == EPIPE) || (errno == ECONNRESET)
) {
/* Assume that the child has crashed and restart it. */
close(ch->fd);
/* Assume that the child has crashed and restart it. */
close(ch->fd);
- ch->fd = stdmkchild(ch->argv);
+ ch->fd = stdmkchild(ch->argv
, chinit, idata
);
if(!sendreq(ch->fd, req, fd))
return(0);
}
if(!sendreq(ch->fd, req, fd))
return(0);
}
@@
-345,7
+345,7
@@
int childhandle(struct child *ch, struct hthead *req, int fd)
return(-1);
}
} else if(ch->type == CH_FORK) {
return(-1);
}
} else if(ch->type == CH_FORK) {
- if(stdforkserve(ch->argv, req, fd) < 0)
+ if(stdforkserve(ch->argv, req, fd
, chinit, idata
) < 0)
return(-1);
}
return(0);
return(-1);
}
return(0);