diff options
| -rw-r--r-- | avahi-daemon/avahi-daemon.service.in | 7 | ||||
| -rw-r--r-- | avahi-daemon/avahi-daemon.socket.in | 4 | ||||
| -rw-r--r-- | avahi-daemon/main.c | 34 | ||||
| -rw-r--r-- | avahi-daemon/sd-daemon.c | 8 | ||||
| -rw-r--r-- | avahi-dnsconfd/avahi-dnsconfd.service.in | 6 | ||||
| -rw-r--r-- | configure.ac | 2 | ||||
| -rw-r--r-- | initscript/lfs/Makefile.am | 4 | 
7 files changed, 48 insertions, 17 deletions
| diff --git a/avahi-daemon/avahi-daemon.service.in b/avahi-daemon/avahi-daemon.service.in index d5a9dd4..6f05b4a 100644 --- a/avahi-daemon/avahi-daemon.service.in +++ b/avahi-daemon/avahi-daemon.service.in @@ -16,15 +16,16 @@  # USA.  [Unit] -Requires=basic.target avahi-daemon.socket -After=basic.target syslog.target avahi-daemon.socket -Conflicts=shutdown.target +Description=Avahi mDNS/DNS-SD Stack +Requires=avahi-daemon.socket +After=syslog.target  [Service]  Type=dbus  BusName=org.freedesktop.Avahi  ExecStart=@sbindir@/avahi-daemon -s  ExecReload=@sbindir@/avahi-daemon -r +NotifyAccess=main  [Install]  WantedBy=multi-user.target diff --git a/avahi-daemon/avahi-daemon.socket.in b/avahi-daemon/avahi-daemon.socket.in index b8e6b79..13309b8 100644 --- a/avahi-daemon/avahi-daemon.socket.in +++ b/avahi-daemon/avahi-daemon.socket.in @@ -16,9 +16,7 @@  # USA.  [Unit] -After=sysinit.target -Before=sockets.target -Conflicts=shutdown.target +Description=Avahi mDNS/DNS-SD Stack Activation Socket  [Socket]  ListenStream=@avahi_runtime_dir@/avahi-daemon/socket diff --git a/avahi-daemon/main.c b/avahi-daemon/main.c index 8bd856e..1e8b255 100644 --- a/avahi-daemon/main.c +++ b/avahi-daemon/main.c @@ -354,7 +354,7 @@ static void server_callback(AvahiServer *s, AvahiServerState state, void *userda      switch (state) {          case AVAHI_SERVER_RUNNING:              avahi_log_info("Server startup complete. Host name is %s. Local service cookie is %u.", avahi_server_get_host_name_fqdn(s), avahi_server_get_local_service_cookie(s)); - +            sd_notifyf(0, "STATUS=Server startup complete. Host name is %s. Local service cookie is %u.", avahi_server_get_host_name_fqdn(s), avahi_server_get_local_service_cookie(s));              avahi_set_proc_title(argv0, "%s: running [%s]", argv0, avahi_server_get_host_name_fqdn(s));              static_service_add_to_server(); @@ -374,14 +374,16 @@ static void server_callback(AvahiServer *s, AvahiServerState state, void *userda          case AVAHI_SERVER_COLLISION: {              char *n; -            avahi_set_proc_title(argv0, "%s: collision", argv0); -              static_service_remove_from_server();              static_hosts_remove_from_server();              remove_dns_server_entry_groups();              n = avahi_alternative_host_name(avahi_server_get_host_name(s)); -            avahi_log_warn("Host name conflict, retrying with <%s>", n); + +            avahi_log_warn("Host name conflict, retrying with %s", n); +            sd_notifyf(0, "STATUS=Host name conflict, retrying with %s", n); +            avahi_set_proc_title(argv0, "%s: collision [%s]", argv0, n); +              avahi_server_set_host_name(s, n);              avahi_free(n); @@ -391,11 +393,14 @@ static void server_callback(AvahiServer *s, AvahiServerState state, void *userda          case AVAHI_SERVER_FAILURE:              avahi_log_error("Server error: %s", avahi_strerror(avahi_server_errno(s))); +            sd_notifyf(0, "STATUS=Server error: %s", avahi_strerror(avahi_server_errno(s))); +              avahi_simple_poll_quit(simple_poll_api);              break;          case AVAHI_SERVER_REGISTERING: +            sd_notifyf(0, "STATUS=Registering host name %s", avahi_server_get_host_name_fqdn(s));              avahi_set_proc_title(argv0, "%s: registering [%s]", argv0, avahi_server_get_host_name_fqdn(s));              static_service_remove_from_server(); @@ -1070,6 +1075,16 @@ static void signal_callback(AvahiWatch *watch, AVAHI_GCC_UNUSED int fd, AVAHI_GC  /* Imported from ../avahi-client/nss-check.c */  int avahi_nss_support(void); +static void ignore_signal(int sig)  { +    struct sigaction sa; + +    memset(&sa, 0, sizeof(sa)); +    sa.sa_handler = SIG_IGN; +    sa.sa_flags = SA_RESTART; + +    sigaction(sig, &sa, NULL); +} +  static int run_server(DaemonConfig *c) {      int r = -1;      int error; @@ -1086,6 +1101,8 @@ static int run_server(DaemonConfig *c) {      assert(c); +    ignore_signal(SIGPIPE); +      if (!(nss_support = avahi_nss_support()))          avahi_log_warn("WARNING: No NSS support for mDNS detected, consider installing nss-mdns!"); @@ -1212,6 +1229,7 @@ static int run_server(DaemonConfig *c) {              break;      } +    r = 0;  finish: @@ -1568,6 +1586,9 @@ int main(int argc, char *argv[]) {              if (daemon_close_all(-1) < 0)                  avahi_log_warn("Failed to close all remaining file descriptors: %s", strerror(errno)); +        daemon_reset_sigs(-1); +        daemon_unblock_sigs(-1); +          if (make_runtime_dir() < 0)              goto finish; @@ -1610,11 +1631,14 @@ int main(int argc, char *argv[]) {              }  #endif          avahi_log_info("%s "PACKAGE_VERSION" starting up.", argv0); - +        sd_notifyf(0, "STATUS=%s "PACKAGE_VERSION" starting up.", argv0);          avahi_set_proc_title(argv0, "%s: starting up", argv0);          if (run_server(&config) == 0)              r = 0; + +        avahi_log_info("%s "PACKAGE_VERSION" exiting.", argv0); +        sd_notifyf(0, "STATUS=%s "PACKAGE_VERSION" exiting.", argv0);      }  finish: diff --git a/avahi-daemon/sd-daemon.c b/avahi-daemon/sd-daemon.c index cb568b5..3bb258d 100644 --- a/avahi-daemon/sd-daemon.c +++ b/avahi-daemon/sd-daemon.c @@ -141,7 +141,7 @@ int sd_is_fifo(int fd, const char *path) {                  struct stat st_path;                  memset(&st_path, 0, sizeof(st_path)); -                if (fstat(fd, &st_path) < 0) { +                if (stat(path, &st_path) < 0) {                          if (errno == ENOENT || errno == ENOTDIR)                                  return 0; @@ -381,7 +381,11 @@ int sd_notify(int unset_environment, const char *state) {          memset(&msghdr, 0, sizeof(msghdr));          msghdr.msg_name = &sockaddr; -        msghdr.msg_namelen = sizeof(struct sockaddr_un); +        msghdr.msg_namelen = sizeof(sa_family_t) + strlen(e); + +        if (msghdr.msg_namelen > sizeof(struct sockaddr_un)) +                msghdr.msg_namelen = sizeof(struct sockaddr_un); +          msghdr.msg_iov = &iovec;          msghdr.msg_iovlen = 1;          msghdr.msg_control = &control; diff --git a/avahi-dnsconfd/avahi-dnsconfd.service.in b/avahi-dnsconfd/avahi-dnsconfd.service.in index 2db23d1..bd12b7e 100644 --- a/avahi-dnsconfd/avahi-dnsconfd.service.in +++ b/avahi-dnsconfd/avahi-dnsconfd.service.in @@ -16,9 +16,9 @@  # USA.  [Unit] -Requires=basic.target avahi-daemon.socket avahi-daemon.service -After=basic.target syslog.target avahi-daemon.socket -Conflicts=shutdown.target +Description=Avahi DNS Configuration Daemon +Requires=avahi-daemon.socket avahi-daemon.service +After=syslog.target avahi-daemon.socket  [Service]  Type=simple diff --git a/configure.ac b/configure.ac index 73f5528..4d6b288 100644 --- a/configure.ac +++ b/configure.ac @@ -564,7 +564,7 @@ if test "x$HAVE_GTK3" = "xyes" ; then  fi  AM_CONDITIONAL(HAVE_GTK3, test "x$HAVE_GTK3" = "xyes") -AM_CONDITIONAL(HAVE_GTK2OR3, test "x$HAVE_GTK3" = "xyes" -o "x$HAVE_GTK2" = "xyes" ) +AM_CONDITIONAL(HAVE_GTK2OR3, test "x$HAVE_GTK3" = "xyes" -o "x$HAVE_GTK" = "xyes" )  #  # D-Bus diff --git a/initscript/lfs/Makefile.am b/initscript/lfs/Makefile.am index e8386e8..ed8dcb8 100644 --- a/initscript/lfs/Makefile.am +++ b/initscript/lfs/Makefile.am @@ -24,4 +24,8 @@ initd_SCRIPTS = avahi  CLEANFILES = avahi  avahi: avahi.in +	$(AM_V_GEN)sed \ +		-e 's,@sbindir\@,$(sbindir),g' \ +		-e 's,@localstatedir\@,$(localstatedir),g' \ +		$< > $@ && \  	chmod +x $@ | 
