summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--avahi-daemon/avahi-daemon.service.in7
-rw-r--r--avahi-daemon/avahi-daemon.socket.in4
-rw-r--r--avahi-daemon/main.c34
-rw-r--r--avahi-daemon/sd-daemon.c8
-rw-r--r--avahi-dnsconfd/avahi-dnsconfd.service.in6
-rw-r--r--configure.ac2
-rw-r--r--initscript/lfs/Makefile.am4
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 $@