Commit 12a5fa56 authored by Dag Erling Smørgrav's avatar Dag Erling Smørgrav

Fix child restart by always calling close_sockets() when the child dies;

otherwise open_sockets() fails, which causes start_child() to fail silently.

Furthermore, if open_sockets() fails and child_state is CH_DIED, it will
not be possible to start it manually later; therefore, set child_state
to CH_STOPPED when open_sockets() fails.

Note: it wouldn't hurt if open_sockets() were a little more talkative.


git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@1710 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 04f1535b
......@@ -174,8 +174,10 @@ start_child(void)
if (child_state != CH_STOPPED && child_state != CH_DIED)
return;
if (open_sockets())
if (open_sockets()) {
child_state = CH_STOPPED;
return; /* XXX ?? */
}
child_state = CH_STARTING;
......@@ -336,12 +338,11 @@ mgt_sigchld(struct ev *e, int what)
child_fds[0] = -1;
fprintf(stderr, "Child cleaned\n");
close_sockets();
if (child_state == CH_DIED && params->auto_restart)
start_child();
else if (child_state == CH_DIED) {
close_sockets();
else if (child_state == CH_DIED)
child_state = CH_STOPPED;
}
else if (child_state == CH_STOPPING)
child_state = CH_STOPPED;
return (0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment