]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
winbind: move config-reloading code to winbindd_dual.c
authorRalph Boehme <slow@samba.org>
Wed, 20 Jan 2021 10:17:22 +0000 (11:17 +0100)
committerKarolin Seeger <kseeger@samba.org>
Thu, 28 Jan 2021 09:17:15 +0000 (09:17 +0000)
In preperation of forwarding MSG_SMB_CONF_UPDATED to all childs.

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 81edc65e79aba121db800ec53aadd766e61a0001)

source3/winbindd/winbindd.c
source3/winbindd/winbindd_dual.c
source3/winbindd/winbindd_proto.h

index 57d93f5a7693cb3ff7fa4ffc475d8e392bbb387a..85b1cc6e6518fe8eac773b72224546c3df15c608 100644 (file)
@@ -99,7 +99,7 @@ struct imessaging_context *winbind_imessaging_context(void)
 
 /* Reload configuration */
 
-static bool reload_services_file(const char *lfile)
+bool winbindd_reload_services_file(const char *lfile)
 {
        const struct loadparm_substitution *lp_sub =
                loadparm_s3_global_substitution();
@@ -153,7 +153,7 @@ static void winbindd_status(void)
 
 /* Flush client cache */
 
-static void flush_caches(void)
+void winbindd_flush_caches(void)
 {
        /* We need to invalidate cached user list entries on a SIGHUP 
            otherwise cached access denied errors due to restrict anonymous
@@ -360,7 +360,7 @@ static void winbindd_sig_hup_handler(struct tevent_context *ev,
 
        DEBUG(1,("Reloading services after SIGHUP\n"));
        flush_caches_noinit();
-       reload_services_file(file);
+       winbindd_reload_services_file(file);
 }
 
 bool winbindd_setup_sig_hup_handler(const char *lfile)
@@ -444,18 +444,6 @@ static bool winbindd_setup_sig_usr2_handler(void)
        return true;
 }
 
-/* React on 'smbcontrol winbindd reload-config' in the same way as on SIGHUP*/
-static void msg_reload_services(struct messaging_context *msg,
-                               void *private_data,
-                               uint32_t msg_type,
-                               struct server_id server_id,
-                               DATA_BLOB *data)
-{
-        /* Flush various caches */
-       flush_caches();
-       reload_services_file((const char *) private_data);
-}
-
 /* React on 'smbcontrol winbindd shutdown' in the same way as on SIGTERM*/
 static void msg_shutdown(struct messaging_context *msg,
                         void *private_data,
@@ -1417,7 +1405,8 @@ static void winbindd_register_handlers(struct messaging_context *msg_ctx,
        /* React on 'smbcontrol winbindd reload-config' in the same way
           as to SIGHUP signal */
        messaging_register(msg_ctx, NULL,
-                          MSG_SMB_CONF_UPDATED, msg_reload_services);
+                          MSG_SMB_CONF_UPDATED,
+                          winbindd_msg_reload_services_parent);
        messaging_register(msg_ctx, NULL,
                           MSG_SHUTDOWN, msg_shutdown);
 
@@ -1806,7 +1795,7 @@ int main(int argc, const char **argv)
                exit(1);
        }
 
-       if (!reload_services_file(NULL)) {
+       if (!winbindd_reload_services_file(NULL)) {
                DEBUG(0, ("error opening config file\n"));
                exit(1);
        }
index 73715b4b57d9579cc60deb94b17992fb9539034b..56b3dac6dec20ccdc4ec6f3a523dff5ef3e280c3 100644 (file)
@@ -927,6 +927,21 @@ void winbind_disconnect_dc_parent(struct messaging_context *msg_ctx,
        forall_children(winbind_msg_relay_fn, &state);
 }
 
+/* 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,
+                                        uint32_t msg_type,
+                                        struct server_id server_id,
+                                        DATA_BLOB *data)
+{
+       DBG_DEBUG("Got reload-config message\n");
+
+        /* Flush various caches */
+       winbindd_flush_caches();
+
+       winbindd_reload_services_file((const char *)private_data);
+}
+
 /* Set our domains as offline and forward the offline message to our children. */
 
 struct winbind_msg_on_offline_state {
index 2a829b0171a39228c96cee683670a35a8ca7e30b..6d4ffa726f1df218243a10757c0bcc3415d7d1c1 100644 (file)
@@ -31,6 +31,8 @@ bool winbindd_setup_sig_hup_handler(const char *lfile);
 bool winbindd_use_idmap_cache(void);
 bool winbindd_use_cache(void);
 char *get_winbind_priv_pipe_dir(void);
+void winbindd_flush_caches(void);
+bool winbindd_reload_services_file(const char *lfile);
 
 /* The following definitions come from winbindd/winbindd_ads.c  */
 
@@ -341,6 +343,11 @@ void winbind_msg_ip_dropped_parent(struct messaging_context *msg_ctx,
                                   uint32_t msg_type,
                                   struct server_id server_id,
                                   DATA_BLOB *data);
+void winbindd_msg_reload_services_parent(struct messaging_context *msg,
+                                        void *private_data,
+                                        uint32_t msg_type,
+                                        struct server_id server_id,
+                                        DATA_BLOB *data);
 NTSTATUS winbindd_reinit_after_fork(const struct winbindd_child *myself,
                                    const char *logfilename);
 struct winbindd_domain *wb_child_domain(void);