Merge pull request #151 from pi-hole/fix/dnsmasq_reload

Re-parse gravity data when receiving SIGHUP
This commit is contained in:
DL6ER
2017-10-26 21:41:59 +02:00
committed by GitHub
4 changed files with 30 additions and 11 deletions
+1
View File
@@ -231,3 +231,4 @@ bool database;
long int lastdbindex;
bool travis;
bool DBdeleteoldqueries;
bool rereadgravity;
+10
View File
@@ -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");
}
}
-10
View File
@@ -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
+19 -1
View File
@@ -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)
{
@@ -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);
}