syslogd: avoid spurious ftrunctate() calls for "-b 0"
authorJoshua Judson Rosen <jrosen@harvestai.com>
Tue, 20 May 2014 05:02:18 +0000 (01:02 -0400)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 2 Jun 2014 01:11:38 +0000 (03:11 +0200)
Forgetting to re-set log_file->size after truncating to zero
discards log-data for the next 1 second following an oversize-induced purge,
when we shouldn't necessarily throw that data away.

Signed-off-by: Joshua Judson Rosen <jrosen@harvestai.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
sysklogd/syslogd.c

index a6a4ff25c69e035707d396f8e1f25fa62f6f4fd4..2c959ff1bf68e7578df8ab416b03ee776bcce89a 100644 (file)
@@ -663,7 +663,13 @@ static void log_locally(time_t now, char *msg, logFile_t *log_file)
                        close(log_file->fd);
                        goto reopen;
                }
+
+               /* We don't get here unless G.logFileRotate == 0;
+                * in which case don't bother unlinking and reopening,
+                * just truncate and reset size to match:
+                */
                ftruncate(log_file->fd, 0);
+               log_file->size = 0;
        }
        log_file->size +=
 #endif