summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim McDonough <jmcd@samba.org>2008-05-13 16:57:01 -0400
committerJim McDonough <jmcd@samba.org>2008-05-13 16:57:01 -0400
commita6b0ea8ee341fde28e568f8e1a4f16d9a89425c8 (patch)
tree22b0ed7cfecc581adcafdfdc101900516aae517b
parent34933a5c236ee489e4c11172820cdc0496b9e334 (diff)
downloadsamba-a6b0ea8ee341fde28e568f8e1a4f16d9a89425c8.tar.gz
samba-a6b0ea8ee341fde28e568f8e1a4f16d9a89425c8.tar.bz2
samba-a6b0ea8ee341fde28e568f8e1a4f16d9a89425c8.zip
Enable winbind child processes to do something with signals,
in particular closing and reopening logs on SIGHUP. Conflicts: source/winbindd/winbindd.c (This used to be commit 0f7b11accec7df1c0e9a9dc0828a5e0c5ddec4cb)
-rw-r--r--source3/winbindd/winbindd.c35
-rw-r--r--source3/winbindd/winbindd_dual.c4
2 files changed, 27 insertions, 12 deletions
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 1072f8e762..57eee20f49 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -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();
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index f71eec56f6..1d741be79e 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -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);