summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2021-01-20 12:00:16 +0100
committerKarolin Seeger <kseeger@samba.org>2021-02-01 07:50:10 +0000
commit27dc8f4e90b4222b88cabf0fe7b85b82a04f3504 (patch)
tree7107b1478337ede846e93645da0f9ca0bc7a9508
parent3b5fa17d9bd1b256dcb563f0b066938a95b7eccf (diff)
downloadsamba-27dc8f4e90b4222b88cabf0fe7b85b82a04f3504.tar.gz
winbind: handle MSG_SMB_CONF_UPDATED in the winbinds children
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14602 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> (cherry picked from commit 072ef48001710ed8326c83295f2d3cc301d27cfe)
-rw-r--r--source3/winbindd/winbindd_dual.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index 6cc1305a9b8..b1c86b2979c 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -927,6 +927,16 @@ void winbind_disconnect_dc_parent(struct messaging_context *msg_ctx,
forall_children(winbind_msg_relay_fn, &state);
}
+static void winbindd_msg_reload_services_child(struct messaging_context *msg,
+ void *private_data,
+ uint32_t msg_type,
+ struct server_id server_id,
+ DATA_BLOB *data)
+{
+ DBG_DEBUG("Got reload-config message\n");
+ winbindd_reload_services_file((const char *)private_data);
+}
+
/* React on 'smbcontrol winbindd reload-config' in the same way as on SIGHUP*/
void winbindd_msg_reload_services_parent(struct messaging_context *msg,
void *private_data,
@@ -934,12 +944,20 @@ void winbindd_msg_reload_services_parent(struct messaging_context *msg,
struct server_id server_id,
DATA_BLOB *data)
{
+ struct winbind_msg_relay_state state = {
+ .msg_ctx = msg,
+ .msg_type = msg_type,
+ .data = data,
+ };
+
DBG_DEBUG("Got reload-config message\n");
/* Flush various caches */
winbindd_flush_caches();
winbindd_reload_services_file((const char *)private_data);
+
+ forall_children(winbind_msg_relay_fn, &state);
}
/* Set our domains as offline and forward the offline message to our children. */
@@ -1775,6 +1793,10 @@ static bool fork_domain_child(struct winbindd_child *child)
messaging_register(global_messaging_context(), NULL,
MSG_WINBIND_DISCONNECT_DC,
winbind_msg_disconnect_dc);
+ messaging_register(global_messaging_context(),
+ override_logfile ? NULL : child->logfilename,
+ MSG_SMB_CONF_UPDATED,
+ winbindd_msg_reload_services_child);
primary_domain = find_our_domain();