From: Lennart Poettering Date: Tue, 13 Jul 2010 01:01:51 +0000 (+0200) Subject: Merge remote branch 'origin/master-tx' X-Git-Url: http://git.meshlink.io/?a=commitdiff_plain;h=a50ab2d8de27e616c9834df3063d99da6ebbd2ac;hp=078ffb485e45ca636a70a1af5374e780fe10db47;p=catta Merge remote branch 'origin/master-tx' --- 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 $@