summaryrefslogtreecommitdiffstats
path: root/avahi-daemon/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'avahi-daemon/main.c')
-rw-r--r--avahi-daemon/main.c34
1 files changed, 29 insertions, 5 deletions
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: