]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
abort if all the redirectors close
authorwessels <>
Tue, 16 Jul 1996 07:51:14 +0000 (07:51 +0000)
committerwessels <>
Tue, 16 Jul 1996 07:51:14 +0000 (07:51 +0000)
src/redirect.cc

index bb6c1e37b2e0c2dff67ed1bf4d2b6970064facf2..de7014de5801de0079339d3d11587820a8234f3b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: redirect.cc,v 1.3 1996/07/11 17:42:50 wessels Exp $
+ * $Id: redirect.cc,v 1.4 1996/07/16 01:51:14 wessels Exp $
  *
  * DEBUG: section 29    Redirector
  * AUTHOR: Duane Wessels
@@ -80,6 +80,7 @@ static void redirectDispatch _PARAMS((redirector_t *, redirectStateData *));
 
 static redirector_t **redirect_child_table = NULL;
 static int NRedirectors = 0;
+static int NRedirectorsOpen = 0;
 static struct redirectQueueData *redirectQueueHead = NULL;
 static struct redirectQueueData **redirectQueueTailP = &redirectQueueHead;
 
@@ -171,6 +172,8 @@ static int redirectHandleRead(fd, redirector)
            fd, redirector->index + 1);
        redirector->flags = 0;
        comm_close(fd);
+       if (--NRedirectorsOpen == 0)
+           fatal_dump("All redirectors have exited!");
        return 0;
     }
     redirector->offset += len;
@@ -318,7 +321,7 @@ void redirectOpenServers()
            safe_free(redirect_child_table[k]);
        safe_free(redirect_child_table);
     }
-    NRedirectors = getRedirectChildren();
+    NRedirectors = NRedirectorsOpen = getRedirectChildren();
     redirect_child_table = xcalloc(NRedirectors, sizeof(redirector_t *));
     debug(29, 1, "redirectOpenServers: Starting %d '%s' processes\n",
        NRedirectors, prg);