[syslog-ng] [PATCH 2/2] afsocket: Support a smooth upgrade path to recent systemd

Gergely Nagy algernon at balabit.hu
Sat Apr 21 10:20:58 CEST 2012


Gergely Nagy <algernon at balabit.hu> writes:

> When the journal was introduced in systemd, it started to pass
> /run/systemd/journal/syslog to syslogds (it was passing down /dev/log
> before). Since we verify that the FD to open matches the expected
> filename, we didn't pick up the fd due to the filename mismatch.
>
> This can be fixed on the system() source level, where it can decide
> which to generate into the config. However, for setups that do not use
> system() for one reason or the other, this does not work.
>
> For them, the best solution is to try and check the passed FDs with
> /run/systemd/journal/syslog as the filename, so if all else fails, we
> pick that up. This patch does just that.

A small note:

> +static gboolean
> +afunix_sd_acquire_socket(AFSocketSourceDriver *s, gint *result_fd)
> +{
> +  AFUnixSourceDriver *self = (AFUnixSourceDriver *) s;
> +  int status;
> +
> +  status = afunix_sd_acquire_socket_with_fn(s, result_fd, self->filename);
> +  if (status == 0)
>      {
> -      msg_debug("Failed to acquire systemd socket, trying to open ourselves",
> -		evt_tag_str("filename", self->filename),
> -		NULL);
> +      status = afunix_sd_acquire_socket_with_fn(s, result_fd, "/run/systemd/journal/syslog");
> +      if (status == 1)
> +        {
> +          g_free(self->filename);
> +          self->filename = g_strdup("/run/systemd/journal/syslog");
> +          return TRUE;
> +        }
>      }
> -  return TRUE;
> +  return !!(status == 1);
>  }

This part should not blindly call _acquire_socket_with_fn with the
filename replaced, but only do that when the current self->filename is
/dev/log, otherwise we might end up replacing another unix-dgram. With
an extra strcmp(), the result should be safe.

A bit of cleaning up around the msg_debugs() will still be in order,
though. I'll try to do both tomorrow, and send an updated patch.

-- 
|8]



More information about the syslog-ng mailing list