From: hno <> Date: Wed, 3 May 2000 02:12:08 +0000 (+0000) Subject: hno squid-2.2.STABLE4.helper_filedescriptors.patch X-Git-Tag: SQUID_3_0_PRE1~2017 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3cdb7cd085f1d8b6538ef243d79b06ca67a971e8;p=thirdparty%2Fsquid.git hno squid-2.2.STABLE4.helper_filedescriptors.patch Squid-2.2.STABLE4: helpers and open filedescriptors Make sure all unneeded filedescriptors is properly closed when starting helper processes. --- diff --git a/ChangeLog b/ChangeLog index cd0b690d21..7484396612 100644 --- 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 (): diff --git a/src/helper.cc b/src/helper.cc index 5a9e298658..36d09f7144 100644 --- a/src/helper.cc +++ b/src/helper.cc @@ -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); diff --git a/src/ipc.cc b/src/ipc.cc index 1f08eb044d..dd3a713570 100644 --- a/src/ipc.cc +++ b/src/ipc.cc @@ -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