rpms/syslog-ng/F-7 logrotation-bug-2.0.7.patch, NONE, 1.1 syslog-ng.spec, 1.27, 1.28

Douglas E. Warner (silfreed) fedora-extras-commits at redhat.com
Tue Jan 29 19:00:29 UTC 2008


Author: silfreed

Update of /cvs/pkgs/rpms/syslog-ng/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv27743

Modified Files:
	syslog-ng.spec 
Added Files:
	logrotation-bug-2.0.7.patch 
Log Message:
* Tue Jan 29 2008 Douglas E. Warner <silfreed at silfreed.net> 2.0.7-2
- added patch from git commit a8b9878ab38b10d24df7b773c8c580d341b22383
  to fix log rotation (bug#430057)


logrotation-bug-2.0.7.patch:

--- NEW FILE logrotation-bug-2.0.7.patch ---
diff --git a/src/affile.c b/src/affile.c
index 42f70c3..e8e2f1d 100644
--- a/src/affile.c
+++ b/src/affile.c
@@ -344,8 +344,12 @@ affile_dw_init(LogPipe *s, GlobalConfig *cfg, PersistentConfig *persist)
     {
       FDWrite *fdw;
       
-      self->writer = log_writer_new(LW_FORMAT_FILE, s, &self->owner->writer_options);
+      if (!self->writer)
+        {
+          self->writer = log_writer_new(LW_FORMAT_FILE, s, &self->owner->writer_options);
         
+          log_pipe_append(&self->super, self->writer);
+        }
       if (!log_pipe_init(self->writer, NULL, NULL))
         {
           msg_error("Error initializing log writer", NULL);
@@ -358,7 +362,6 @@ affile_dw_init(LogPipe *s, GlobalConfig *cfg, PersistentConfig *persist)
       if (self->owner->flags & AFFILE_FSYNC)
         fdw->fsync = TRUE;
       log_writer_reopen(self->writer, fdw);
-      log_pipe_append(&self->super, self->writer);
     }
   else
     {
@@ -379,9 +382,7 @@ affile_dw_deinit(LogPipe *s, GlobalConfig *cfg, PersistentConfig *persist)
   if (self->writer)
     {
       log_pipe_deinit(self->writer, NULL, NULL);
-      log_pipe_unref(self->writer);
     }
-  self->writer = NULL;
   return TRUE;
 }
 
@@ -410,7 +411,7 @@ affile_dw_set_owner(AFFileDestWriter *self, AFFileDestDriver *owner)
   log_pipe_ref(&owner->super.super);
   self->owner = owner;
   if (self->writer)
-    log_writer_set_options((LogWriter *) self->writer, &owner->writer_options);
+    log_writer_set_options((LogWriter *) self->writer, &self->super, &owner->writer_options);
   
 }
 
@@ -419,6 +420,8 @@ affile_dw_free(LogPipe *s)
 {
   AFFileDestWriter *self = (AFFileDestWriter *) s;
   
+  log_pipe_unref(self->writer);
+  self->writer = NULL;
   g_string_free(self->filename, TRUE);
   log_pipe_unref(&self->owner->super.super);
   
@@ -620,6 +623,7 @@ affile_dd_reuse_writer(gpointer key, gpointer value, gpointer user_data)
   AFFileDestWriter *writer = (AFFileDestWriter *) value;
   
   affile_dw_set_owner(writer, self);
+  log_pipe_init(&writer->super, NULL, NULL);
 }
 
 
@@ -665,7 +669,10 @@ affile_dd_init(LogPipe *s, GlobalConfig *cfg, PersistentConfig *persist)
     {
       self->writer = persist_config_fetch(persist, affile_dd_format_persist_name(self));
       if (self->writer)
-        affile_dw_set_owner(self->writer, self);
+        {
+          affile_dw_set_owner(self->writer, self);
+          log_pipe_init(&self->writer->super, NULL, NULL);
+        }
     }
   
   
@@ -711,6 +718,12 @@ affile_dd_destroy_writer_hash(gpointer value)
   g_hash_table_destroy(writer_hash);
 }
 
+static void
+affile_dd_deinit_writer(gpointer key, gpointer value, gpointer user_data)
+{
+  log_pipe_deinit((LogPipe *) value, NULL, NULL);
+}
+
 static gboolean
 affile_dd_deinit(LogPipe *s, GlobalConfig *cfg, PersistentConfig *persist)
 {
@@ -721,6 +734,7 @@ affile_dd_deinit(LogPipe *s, GlobalConfig *cfg, PersistentConfig *persist)
     {
       g_assert(self->writer_hash == NULL);
 
+      log_pipe_deinit(&self->writer->super, NULL, NULL);
       persist_config_add(persist, affile_dd_format_persist_name(self), self->writer, affile_dd_destroy_writer);
       self->writer = NULL;
     }
@@ -728,6 +742,7 @@ affile_dd_deinit(LogPipe *s, GlobalConfig *cfg, PersistentConfig *persist)
     {
       g_assert(self->writer == NULL);
       
+      g_hash_table_foreach(self->writer_hash, affile_dd_deinit_writer, NULL);
       persist_config_add(persist, affile_dd_format_persist_name(self), self->writer_hash, affile_dd_destroy_writer_hash);
       self->writer_hash = NULL;
     }
diff --git a/src/logwriter.c b/src/logwriter.c
index 3286da7..bb82b43 100644
--- a/src/logwriter.c
+++ b/src/logwriter.c
@@ -423,6 +423,7 @@ log_writer_reopen(LogPipe *s, FDWrite *newfd)
 {
   LogWriter *self = (LogWriter *) s;
   
+  /* old fd is freed by the source */
   if (self->source)
     {
       g_source_destroy(self->source);
@@ -440,12 +441,12 @@ log_writer_reopen(LogPipe *s, FDWrite *newfd)
 }
 
 void
-log_writer_set_options(LogWriter *self, LogWriterOptions *options)
+log_writer_set_options(LogWriter *self, LogPipe *control, LogWriterOptions *options)
 {
+  self->control = control;
   self->options = options;
 }
 
-
 LogPipe *
 log_writer_new(guint32 flags, LogPipe *control, LogWriterOptions *options)
 {
diff --git a/src/logwriter.h b/src/logwriter.h
index 3fe7129..284899b 100644
--- a/src/logwriter.h
+++ b/src/logwriter.h
@@ -81,7 +81,7 @@ typedef struct _LogWriter
   LogWriterOptions *options;
 } LogWriter;
 
-void log_writer_set_options(LogWriter *self, LogWriterOptions *options);
+void log_writer_set_options(LogWriter *self, LogPipe *control, LogWriterOptions *options);
 void log_writer_format_log(LogWriter *self, LogMessage *lm, GString *result);
 gboolean log_writer_reopen(LogPipe *s, FDWrite *fd);
 LogPipe *log_writer_new(guint32 flags, LogPipe *control, LogWriterOptions *options);


Index: syslog-ng.spec
===================================================================
RCS file: /cvs/pkgs/rpms/syslog-ng/F-7/syslog-ng.spec,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- syslog-ng.spec	9 Jan 2008 14:05:16 -0000	1.27
+++ syslog-ng.spec	29 Jan 2008 18:59:48 -0000	1.28
@@ -10,7 +10,7 @@
 
 Name:             syslog-ng
 Version:          2.0.7
-Release:          1%{?dist}
+Release:          2%{?dist}
 Summary:          Syslog replacement daemon
 
 Group:            System Environment/Daemons
@@ -21,6 +21,8 @@
 Patch0:           syslog-ng-2.0.0-init.patch
 Patch1:           syslog-ng-1.6.7-logrotate.patch
 Patch2:           syslog-ng-2.0.5-conf.patch
+# Patch3: bug#430057
+Patch3:           logrotation-bug-2.0.7.patch
 BuildRoot:        %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:    flex
@@ -58,6 +60,7 @@
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
+%patch3 -p1
 %{__sed} -i  's|^#!/usr/local/bin/perl|#!%{__perl}|' contrib/relogger.pl
 chmod -c a-x contrib/syslog2ng
 
@@ -176,6 +179,10 @@
 
 
 %changelog
+* Tue Jan 29 2008 Douglas E. Warner <silfreed at silfreed.net> 2.0.7-2
+- added patch from git commit a8b9878ab38b10d24df7b773c8c580d341b22383
+  to fix log rotation (bug#430057)
+
 * Tue Jan 08 2008 Douglas E. Warner <silfreed at silfreed.net> 2.0.7-1
 - updated to 2.0.7
 - force regeneration to avoid broken paths from upstream (#265221)




More information about the fedora-extras-commits mailing list