Enable winbind child processes to do something with signals,
authorJim McDonough <jmcd@samba.org>
Tue, 13 May 2008 20:57:01 +0000 (16:57 -0400)
committerJim McDonough <jmcd@samba.org>
Tue, 13 May 2008 20:57:01 +0000 (16:57 -0400)
in particular closing and reopening logs on SIGHUP.

Conflicts:

source/winbindd/winbindd.c
(This used to be commit 0f7b11accec7df1c0e9a9dc0828a5e0c5ddec4cb)

source3/winbindd/winbindd.c
source3/winbindd/winbindd_dual.c

index 1072f8e762b39de0802607d9cdd2054c880d9663..57eee20f49dfd7ad80e7d257d0a83a3e4f59df6e 100644 (file)
@@ -795,6 +795,27 @@ static bool remove_idle_client(void)
        return False;
 }
 
+/* check if HUP has been received and reload files */
+void winbind_check_sighup(void)
+{
+       if (do_sighup) {
+
+               DEBUG(3, ("got SIGHUP\n"));
+
+               flush_caches();
+               reload_services_file();
+
+               do_sighup = False;
+       }
+}
+
+/* check if TERM has been received */
+void winbind_check_sigterm(void)
+{
+       if (do_sigterm)
+               terminate();
+}
+
 /* Process incoming clients on listen_sock.  We use a tricky non-blocking,
    non-forking, non-threaded model which allows us to handle many
    simultaneous connections while remaining impervious to many denial of
@@ -954,18 +975,8 @@ static void process_loop(void)
 
        /* Check signal handling things */
 
-       if (do_sigterm)
-               terminate();
-
-       if (do_sighup) {
-
-               DEBUG(3, ("got SIGHUP\n"));
-
-               flush_caches();
-               reload_services_file();
-
-               do_sighup = False;
-       }
+       winbind_check_sigterm();
+       winbind_check_sighup();
 
        if (do_sigusr2) {
                print_winbindd_status();
index f71eec56f6a9ef73c1f1e4db96341ea0b5e06484..1d741be79ea00d497caf6f4735957150ceb65b79 100644 (file)
@@ -1105,6 +1105,10 @@ static bool fork_domain_child(struct winbindd_child *child)
                struct timeval now;
                TALLOC_CTX *frame = talloc_stackframe();
 
+               /* check for signals */
+               winbind_check_sigterm();
+               winbind_check_sighup();
+
                run_events(winbind_event_context(), 0, NULL, NULL);
 
                GetTimeOfDay(&now);