From b95e736dc727dbe574db3e8c91ecda5a4b10dcdd Mon Sep 17 00:00:00 2001 From: prx Date: Sun, 18 Sep 2022 14:43:53 +0200 Subject: [PATCH] add fork check for error and reformat --- main.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/main.c b/main.c index beda16f..d1be695 100644 --- a/main.c +++ b/main.c @@ -44,22 +44,29 @@ int main(int argc, char *argv[]){ exit(1); } - syslog(LOG_DAEMON, "blocking %s", ip); switch (sock.ss_family) { case AF_INET: /* FALLTHROUGH */ case AF_INET6: id = fork(); - // child process - if (id == 0) { - execl("/usr/bin/doas", "doas", "/sbin/pfctl", "-t", table, "-T", "add", ip, NULL); - } else { // parent process + if (id == -1) { + syslog(LOG_DAEMON, "fork error"); + exit(1); + } else if (id == 0) { + // child process + syslog(LOG_DAEMON, "blocking %s", ip); + execl("/usr/bin/doas", "doas", "/sbin/pfctl", + "-t", table, "-T", "add", ip, NULL); + + } else { + // parent process wait(NULL); + syslog(LOG_DAEMON, "kill states for %s", ip); + execl("/usr/bin/doas", "doas", "/sbin/pfctl", + "-k", ip, NULL); } - execl("/usr/bin/doas", "doas", "/sbin/pfctl", "-k", ip, NULL); break; default: exit(2); } } -