From 70160b49e4916e5d6643b8a74e61ea47612c544e Mon Sep 17 00:00:00 2001 From: hno <> Date: Mon, 12 Aug 2002 04:59:56 +0000 Subject: [PATCH] Avoid a silly reuse after free.. the helper structure gets automatically freed when the filedescriptor is closed (close callback) --- src/helper.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/helper.cc b/src/helper.cc index 4786f0312d..fc59ccc788 100644 --- a/src/helper.cc +++ b/src/helper.cc @@ -1,6 +1,6 @@ /* - * $Id: helper.cc,v 1.40 2002/07/20 23:56:01 hno Exp $ + * $Id: helper.cc,v 1.41 2002/08/11 22:59:56 hno Exp $ * * DEBUG: section 84 Helper process maintenance * AUTHOR: Harvest Derived? @@ -503,8 +503,9 @@ void helperShutdown(helper * hlp) { dlink_node *link = hlp->servers.head; - helper_server *srv; while (link) { + int wfd; + helper_server *srv; srv = link->data; link = link->next; if (!srv->flags.alive) { @@ -524,8 +525,9 @@ helperShutdown(helper * hlp) continue; } srv->flags.closing = 1; - comm_close(srv->wfd); + wfd = srv->wfd; srv->wfd = -1; + comm_close(wfd); } } @@ -738,8 +740,9 @@ helperHandleRead(int fd, void *data) tvSubUsec(srv->dispatch_time, current_time), hlp->stats.replies, REDIRECT_AV_FACTOR); if (srv->flags.shutdown) { - comm_close(srv->wfd); + int wfd = srv->wfd; srv->wfd = -1; + comm_close(wfd); } else helperKickQueue(hlp); } else { @@ -833,8 +836,9 @@ helperStatefulHandleRead(int fd, void *data) if (srv->flags.shutdown && srv->flags.reserved == S_HELPER_FREE && !srv->deferred_requests) { - comm_close(srv->wfd); + int wfd = srv->wfd; srv->wfd = -1; + comm_close(wfd); } else { if (srv->queue.head) helperStatefulServerKickQueue(srv); -- 2.47.3