]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
hno squid-2.2.STABLE4.helper_filedescriptors.patch
authorhno <>
Wed, 3 May 2000 02:12:08 +0000 (02:12 +0000)
committerhno <>
Wed, 3 May 2000 02:12:08 +0000 (02:12 +0000)
Squid-2.2.STABLE4: helpers and open filedescriptors

Make sure all unneeded filedescriptors is properly closed when starting
helper processes.

ChangeLog
src/helper.cc
src/ipc.cc

index cd0b690d214fd425e822abba9939aa3059d6138d..74843966128c3aff41af3b5a448f2837009249c6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -35,6 +35,8 @@ Changes to Squid-2.4.DEVEL3 ():
          to be used.
        - The CONNECT method now obeys miss_access requirements
        - proxy_auth_regex and ident_regex ACL types
+       - Fixed a StoreEntry memory leak during "dirty" rebuild
+       - Helper processes no longer hold unrelated filedescriptors open
 
 Changes to Squid-2.4.DEVEL2 ():
 
index 5a9e2986588d39ece9ee2a22c718824f7c54a78e..36d09f7144d47aaa996a00fda186602d93afafd3 100644 (file)
@@ -179,7 +179,8 @@ helperShutdown(helper * hlp)
            continue;
        }
        srv->flags.closing = 1;
-       comm_close(srv->rfd);
+       comm_close(srv->wfd);
+       srv->wfd = -1;
     }
 }
 
@@ -223,7 +224,7 @@ helperServerFree(int fd, void *data)
        helperRequestFree(r);
        srv->request = NULL;
     }
-    if (srv->wfd != srv->rfd)
+    if (srv->wfd != srv->rfd && srv->wfd != -1)
        comm_close(srv->wfd);
     dlinkDelete(&srv->link, &hlp->servers);
     hlp->n_running--;
@@ -282,9 +283,10 @@ helperHandleRead(int fd, void *data)
            intAverage(hlp->stats.avg_svc_time,
            tvSubMsec(srv->dispatch_time, current_time),
            hlp->stats.replies, REDIRECT_AV_FACTOR);
-       if (srv->flags.shutdown)
+       if (srv->flags.shutdown) {
            comm_close(srv->wfd);
-       else
+           srv->wfd = -1;
+       } else
            helperKickQueue(hlp);
     } else {
        commSetSelect(srv->rfd, COMM_SELECT_READ, helperHandleRead, srv, 0);
index 1f08eb044d655029b02be2c0824056e8f45c2271..dd3a7135701d71088ed389460de3831dc3fb2328 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ipc.cc,v 1.18 2000/03/06 16:23:32 wessels Exp $
+ * $Id: ipc.cc,v 1.19 2000/05/02 20:12:09 hno Exp $
  *
  * DEBUG: section 54    Interprocess Communication
  * AUTHOR: Duane Wessels
@@ -268,10 +268,14 @@ ipcCreate(int type, const char *prog, char *const args[], const char *name, int
     close(t1);
     close(t2);
     close(t3);
+    /* Make sure all other filedescriptors are closed */
+    for(x=3;x<SQUID_MAXFD; x++)
+       close(x);
 #if HAVE_SETSID
     setsid();
 #endif
     execvp(prog, args);
+    debug_log = fdopen(2, "a+");
     debug(50, 0) ("ipcCreate: %s: %s\n", prog, xstrerror());
     _exit(1);
     return 0;