From 84e92df597606eea7537a2c82f59091651c04329 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Wed, 25 Oct 2017 17:45:09 +0200 Subject: [PATCH 1/2] Re-parse gravity data when receiving SIGHUP Signed-off-by: DL6ER --- FTL.h | 1 + main.c | 10 ++++++++++ parser.c | 10 ---------- signals.c | 22 ++++++++++++++++++++-- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/FTL.h b/FTL.h index 926237e3..e6f68afc 100644 --- a/FTL.h +++ b/FTL.h @@ -229,3 +229,4 @@ bool database; long int lastdbindex; bool travis; bool DBdeleteoldqueries; +bool rereadgravity; diff --git a/main.c b/main.c index ff56364b..f748bc29 100644 --- a/main.c +++ b/main.c @@ -137,6 +137,16 @@ int main (int argc, char* argv[]) { while(((time(NULL)%DBinterval) == 0)) sleepms(100); } + + // Handle SIGHUP + if(rereadgravity) + { + enable_thread_lock("pihole_main_thread"); + // Have to re-read gravity files + rereadgravity = false; + read_gravity_files(); + disable_thread_lock("pihole_main_thread"); + } } diff --git a/parser.c b/parser.c index e80e97a7..ac768b92 100644 --- a/parser.c +++ b/parser.c @@ -704,16 +704,6 @@ void process_pihole_log(int file) validate_access_oTfd(timeidx, forwardID, __LINE__, __FUNCTION__, __FILE__); overTime[timeidx].forwarddata[forwardID]++; } - else if((strstr(readbuffer,"IPv6") != NULL) && - (strstr(readbuffer,"DBus") != NULL) && - (strstr(readbuffer,"i18n") != NULL) && - (strstr(readbuffer,"DHCP") != NULL) && - !initialscan) - { - // dnsmasq restartet - logg("dnsmasq process restarted"); - read_gravity_files(); - } // Save file pointer position, because we might have to repeat // reading the next line if dnsmasq hasn't finished writing it diff --git a/signals.c b/signals.c index 8b905bdc..be38bda9 100644 --- a/signals.c +++ b/signals.c @@ -12,6 +12,7 @@ volatile sig_atomic_t killed = 0; int FTLstarttime = 0; +bool rereadgravity = false; static void SIGTERM_handler(int sig, siginfo_t *si, void *unused) { @@ -31,7 +32,7 @@ static void SIGSEGV_handler(int sig, siginfo_t *si, void *unused) logg("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); logg("----------------------------> FTL crashed! <----------------------------"); logg("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - logg("Please report a bug at https://github.com/pi-hole/FTL/issues"); + logg("Please report a bug at https://githuP.com/pi-hole/FTL/issues"); logg("and include in your report already the following details:\n"); if(FTLstarttime != 0) @@ -69,10 +70,16 @@ static void SIGSEGV_handler(int sig, siginfo_t *si, void *unused) static void SIGUSR1_handler(int signum) { - logg("NOTICE: Received signal SIGUSR1"); + logg("NOTICE: Received signal SIGUSR1 - re-parsing log files"); flush = true; } +static void SIGHUP_handler(int signum) +{ + logg("NOTICE: Received signal SIGHUP - re-reading gravity files"); + rereadgravity = true; +} + void handle_signals(void) { // Catch SIGTERM @@ -126,6 +133,17 @@ void handle_signals(void) sigaction(SIGUSR1, &USR1action, NULL); } + // Catch SIGHUP + sigaction (SIGHUP, NULL, &old_action); + if(old_action.sa_handler != SIG_IGN) + { + struct sigaction HUPaction; + memset(&HUPaction, 0, sizeof(struct sigaction)); + sigemptyset(&HUPaction.sa_mask); + HUPaction.sa_handler = &SIGHUP_handler; + sigaction(SIGHUP, &HUPaction, NULL); + } + // Log start time of FTL FTLstarttime = time(NULL); } From c3546c6da42b2ad8cbff07855877d1e71e1a63e3 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Wed, 25 Oct 2017 18:01:09 +0200 Subject: [PATCH 2/2] Fix a small typo Signed-off-by: DL6ER --- signals.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/signals.c b/signals.c index be38bda9..4514f0b3 100644 --- a/signals.c +++ b/signals.c @@ -32,7 +32,7 @@ static void SIGSEGV_handler(int sig, siginfo_t *si, void *unused) logg("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); logg("----------------------------> FTL crashed! <----------------------------"); logg("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - logg("Please report a bug at https://githuP.com/pi-hole/FTL/issues"); + logg("Please report a bug at https://github.com/pi-hole/FTL/issues"); logg("and include in your report already the following details:\n"); if(FTLstarttime != 0)