]> git.ipfire.org Git - thirdparty/ulogd2.git/commitdiff
From: Eric Leblond <eric@inl.fr>:
author/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>
Sun, 3 Feb 2008 11:39:34 +0000 (11:39 +0000)
committer/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>
Sun, 3 Feb 2008 11:39:34 +0000 (11:39 +0000)
For OPRINT, changed sighup_handler_print to fallback to continue using old descriptor on new file opening failure.
Based on Marius Tomaschewski work.

output/ulogd_output_OPRINT.c

index 07364b66ba70a1f946b764ee346f3b5735bf1a28..563fc3b6200b7ea36131e07944cb7ee536833b9e 100644 (file)
@@ -118,15 +118,18 @@ static struct config_keyset oprint_kset = {
 static void sighup_handler_print(struct ulogd_pluginstance *upi, int signal)
 {
        struct oprint_priv *oi = (struct oprint_priv *) &upi->private;
+       FILE *old = oi->of;
 
        switch (signal) {
        case SIGHUP:
                ulogd_log(ULOGD_NOTICE, "OPRINT: reopening logfile\n");
-               fclose(oi->of);
                oi->of = fopen(upi->config_kset->ces[0].u.string, "a");
                if (!oi->of) {
                        ulogd_log(ULOGD_ERROR, "can't open PKTLOG: %s\n",
                                strerror(errno));
+                       oi->of = old;
+               } else {
+                       fclose(old);
                }
                break;
        default: