]> git.meshlink.io Git - catta/blobdiff - avahi-daemon/main.c
socket: minor beautification
[catta] / avahi-daemon / main.c
index de84f0fad52f57e4783b5ee5b5a6314372b53ce4..d46f40a8dddf990f6f5f07766e7e3d01b8f1be08 100644 (file)
@@ -1046,12 +1046,10 @@ static void signal_callback(AvahiWatch *watch, AVAHI_GCC_UNUSED int fd, AVAHI_GC
 
     switch (sig) {
         case SIGINT:
-        case SIGQUIT:
         case SIGTERM:
             avahi_log_info(
                     "Got %s, quitting.",
-                    sig == SIGINT ? "SIGINT" :
-                    (sig == SIGQUIT ? "SIGQUIT" : "SIGTERM"));
+                    sig == SIGINT ? "SIGINT" : "SIGTERM");
             avahi_simple_poll_quit(simple_poll_api);
             break;
 
@@ -1075,6 +1073,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;
@@ -1091,6 +1099,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!");
 
@@ -1101,7 +1111,7 @@ static int run_server(DaemonConfig *c) {
 
     poll_api = avahi_simple_poll_get(simple_poll_api);
 
-    if (daemon_signal_init(SIGINT, SIGQUIT, SIGHUP, SIGTERM, SIGUSR1, 0) < 0) {
+    if (daemon_signal_init(SIGINT, SIGHUP, SIGTERM, SIGUSR1, 0) < 0) {
         avahi_log_error("Could not register signal handlers (%s).", strerror(errno));
         goto finish;
     }
@@ -1217,6 +1227,7 @@ static int run_server(DaemonConfig *c) {
             break;
     }
 
+    r = 0;
 
 finish:
 
@@ -1573,6 +1584,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;
 
@@ -1620,6 +1634,9 @@ int main(int argc, char *argv[]) {
 
         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: