]> arthur.barton.de Git - netatalk.git/blobdiff - etc/netatalk/netatalk.c
Comparison, not assignment
[netatalk.git] / etc / netatalk / netatalk.c
index f2a94102470e85e8527701d618df39626359ea7e..5d71355ecbe9dc3860e0bd1bb77a49467c2869ea 100644 (file)
@@ -116,6 +116,13 @@ static void sigquit_cb(evutil_socket_t fd, short what, void *arg)
     kill_childs(SIGQUIT, &afpd_pid, &cnid_metad_pid, NULL);
 }
 
+/* SIGQUIT callback */
+static void sighup_cb(evutil_socket_t fd, short what, void *arg)
+{
+    LOG(log_note, logtype_afpd, "Received SIGHUP, sending all processes signal to reload config");
+    kill_childs(SIGHUP, &afpd_pid, &cnid_metad_pid, NULL);
+}
+
 /* SIGCHLD callback */
 static void sigchld_cb(evutil_socket_t fd, short what, void *arg)
 {
@@ -139,7 +146,7 @@ static void sigchld_cb(evutil_socket_t fd, short what, void *arg)
 
         if (pid == afpd_pid)
             afpd_pid = -1;
-        else if (pid = cnid_metad_pid)
+        else if (pid == cnid_metad_pid)
             cnid_metad_pid = -1;
         else
             LOG(log_error, logtype_afpd, "Bad pid: %d", pid);
@@ -153,7 +160,6 @@ static void sigchld_cb(evutil_socket_t fd, short what, void *arg)
 static void timer_cb(evutil_socket_t fd, short what, void *arg)
 {
     static int i = 0;
-    LOG(log_debug, logtype_afpd, "looping: %i", i++);
 
     if (in_shutdown)
         return;
@@ -297,6 +303,7 @@ int main(int argc, char **argv)
 
     sigterm_ev = event_new(base, SIGTERM, EV_SIGNAL, sigterm_cb, NULL);
     sigquit_ev = event_new(base, SIGQUIT, EV_SIGNAL | EV_PERSIST, sigquit_cb, NULL);
+    sigquit_ev = event_new(base, SIGHUP,  EV_SIGNAL | EV_PERSIST, sighup_cb, NULL);
     sigchld_ev = event_new(base, SIGCHLD, EV_SIGNAL | EV_PERSIST, sigchld_cb, NULL);
     timer_ev = event_new(base, -1, EV_PERSIST, timer_cb, NULL);
 
@@ -312,6 +319,7 @@ int main(int argc, char **argv)
     sigdelset(&blocksigs, SIGTERM);
     sigdelset(&blocksigs, SIGQUIT);
     sigdelset(&blocksigs, SIGCHLD);
+    sigdelset(&blocksigs, SIGHUP);
     sigprocmask(SIG_SETMASK, &blocksigs, NULL);
 
     /* run the event loop */