From fea7eec14324f42cbba6d26066cff150d5fe0a7f Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Fri, 20 Feb 2026 23:18:04 +1300 Subject: [PATCH 1/3] Add Runner hooks for -k rotate event --- src/base/RunnersRegistry.h | 10 ++++++++++ src/main.cc | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/src/base/RunnersRegistry.h b/src/base/RunnersRegistry.h index 93a2294879b..52677fc997e 100644 --- a/src/base/RunnersRegistry.h +++ b/src/base/RunnersRegistry.h @@ -70,6 +70,16 @@ class RegisteredRunner /// Meant for adjusting the module state based on configuration changes. virtual void syncConfig() {} + /* Log Rotation events */ + + /// Called after receiving a log rotate request. + /// Meant for modules that manage log files to rename/rotate them. + virtual void rotateLogs() {} + + /// Called after rotating log files. + /// Meant for modules that need to (re-)attach to log files after rotation. + virtual void finishLogRotate() {} + /* Shutdown events */ /// Called after receiving a shutdown request and before stopping the main diff --git a/src/main.cc b/src/main.cc index c9ad17f905d..2bb05cfc580 100644 --- a/src/main.cc +++ b/src/main.cc @@ -944,6 +944,8 @@ mainRotate(void) if (AvoidSignalAction("log rotation", do_rotate)) return; + RunRegisteredHere(RegisteredRunner::rotateLogs); + icmpEngine.Close(); redirectShutdown(); #if USE_AUTH @@ -959,6 +961,9 @@ mainRotate(void) #if ICAP_CLIENT icapLogRotate(); /*icap.log*/ #endif + + RunRegisteredHere(RegisteredRunner::finishLogRotate); + icmpEngine.Open(); redirectInit(); #if USE_AUTH From 23c289626b4337a1c33bf7b83c1b6f255ad88ad5 Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Fri, 20 Feb 2026 21:15:43 +1300 Subject: [PATCH 2/3] Use Runner for ICMP component --- src/icmp/IcmpSquid.cc | 13 +++++++++++++ src/main.cc | 2 -- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/icmp/IcmpSquid.cc b/src/icmp/IcmpSquid.cc index 3391ad23d2b..68bbc101731 100644 --- a/src/icmp/IcmpSquid.cc +++ b/src/icmp/IcmpSquid.cc @@ -10,6 +10,7 @@ #include "squid.h" #include "base/Assure.h" +#include "base/RunnersRegistry.h" #include "comm.h" #include "comm/Loops.h" #include "compat/socket.h" @@ -314,3 +315,15 @@ IcmpSquid::Close(void) #endif } +#if USE_ICMP +class IcmpRr : public RegisteredRunner +{ +public: + /* RegisteredRunner API */ + void useConfig() override { icmpEngine.Open(); } + void startReconfigure() override { icmpEngine.Close(); } + void syncConfig() override { icmpEngine.Open(); } + void startShutdown() override { icmpEngine.Close(); } +}; +DefineRunnerRegistrator(IcmpRr); +#endif /* USE_ICMP */ diff --git a/src/main.cc b/src/main.cc index 2bb05cfc580..d226248375a 100644 --- a/src/main.cc +++ b/src/main.cc @@ -777,7 +777,6 @@ serverConnectionsOpen(void) if (IamWorkerProcess()) { clientOpenListenSockets(); icpOpenPorts(); - icmpEngine.Open(); netdbInit(); Acl::Node::Initialize(); peerSelectInit(); @@ -792,7 +791,6 @@ serverConnectionsClose(void) if (IamWorkerProcess()) { clientConnectionsClose(); icpConnectionShutdown(); - icmpEngine.Close(); } } From de9e8333bde583821968637fa092e5039a250bbb Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Fri, 27 Feb 2026 23:42:38 +1300 Subject: [PATCH 3/3] Add -k rotate handlers --- src/icmp/IcmpSquid.cc | 2 ++ src/main.cc | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/icmp/IcmpSquid.cc b/src/icmp/IcmpSquid.cc index 68bbc101731..71a55c05927 100644 --- a/src/icmp/IcmpSquid.cc +++ b/src/icmp/IcmpSquid.cc @@ -323,6 +323,8 @@ class IcmpRr : public RegisteredRunner void useConfig() override { icmpEngine.Open(); } void startReconfigure() override { icmpEngine.Close(); } void syncConfig() override { icmpEngine.Open(); } + void rotateLogs() override { icmpEngine.Close(); } + void finishLogRotate() override { icmpEngine.Open(); } void startShutdown() override { icmpEngine.Close(); } }; DefineRunnerRegistrator(IcmpRr); diff --git a/src/main.cc b/src/main.cc index d226248375a..9c49c7d260e 100644 --- a/src/main.cc +++ b/src/main.cc @@ -944,7 +944,6 @@ mainRotate(void) RunRegisteredHere(RegisteredRunner::rotateLogs); - icmpEngine.Close(); redirectShutdown(); #if USE_AUTH authenticateRotate(); @@ -962,7 +961,6 @@ mainRotate(void) RunRegisteredHere(RegisteredRunner::finishLogRotate); - icmpEngine.Open(); redirectInit(); #if USE_AUTH authenticateInit(&Auth::TheConfig.schemes);