[SCM] Samba Shared Repository - branch v3-2-test updated - release-3-2-0pre2-2673-gf6d4f48

Jeremy Allison jra at samba.org
Wed Jul 2 01:02:11 GMT 2008


The branch, v3-2-test has been updated
       via  f6d4f487332baf74acec8f50e31bcfea44775570 (commit)
      from  0108d32d1d9d7fd975df3ec7d1f1c830f170503f (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit f6d4f487332baf74acec8f50e31bcfea44775570
Author: Jeremy Allison <jra at samba.org>
Date:   Tue Jul 1 18:00:51 2008 -0700

       MSG_DEBUG now forwarded to all the winbindd children by parent.
    
        smbcontrol winbindd debug level would only set the debug level of the
        parent winbindd process and not the child processes. This patch adds
        the functionality of broadcasting the debug message to all winbindd
        children. Now the debug level message is propagated to all the winbindd
        processes that includes parent and children.
    
    From Darshan Purandare <dpurandare at isilon.com> - had to patch separately
    due to proto.h not being under git control in 3.2.x.
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source/lib/debug.c              |    2 +-
 source/winbindd/winbindd.c      |    5 +++++
 source/winbindd/winbindd_dual.c |   34 ++++++++++++++++++++++++++++++++++
 3 files changed, 40 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/debug.c b/source/lib/debug.c
index a76a8db..2ded6bd 100644
--- a/source/lib/debug.c
+++ b/source/lib/debug.c
@@ -476,7 +476,7 @@ bool debug_parse_levels(const char *params_str)
  Receive a "set debug level" message.
 ****************************************************************************/
 
-static void debug_message(struct messaging_context *msg_ctx,
+void debug_message(struct messaging_context *msg_ctx,
 			  void *private_data, 
 			  uint32_t msg_type, 
 			  struct server_id src,
diff --git a/source/winbindd/winbindd.c b/source/winbindd/winbindd.c
index c017916..1bc2ffd 100644
--- a/source/winbindd/winbindd.c
+++ b/source/winbindd/winbindd.c
@@ -1247,6 +1247,11 @@ int main(int argc, char **argv, char **envp)
 			   MSG_WINBIND_DUMP_DOMAIN_LIST,
 			   winbind_msg_dump_domain_list);
 
+	/* Register handler for MSG_DEBUG. */
+	messaging_register(winbind_messaging_context(), NULL,
+			   MSG_DEBUG,
+			   winbind_msg_debug);
+	
 	netsamlogon_cache_init(); /* Non-critical */
 	
 	/* clear the cached list of trusted domains */
diff --git a/source/winbindd/winbindd_dual.c b/source/winbindd/winbindd_dual.c
index 29849e9..c3bcb71 100644
--- a/source/winbindd/winbindd_dual.c
+++ b/source/winbindd/winbindd_dual.c
@@ -501,6 +501,36 @@ void winbindd_flush_negative_conn_cache(struct winbindd_domain *domain)
 	}
 }
 
+/* 
+ * Parent winbindd process sets its own debug level first and then
+ * sends a message to all the winbindd children to adjust their debug
+ * level to that of parents.
+ */
+
+void winbind_msg_debug(struct messaging_context *msg_ctx,
+ 			 void *private_data,
+			 uint32_t msg_type,
+			 struct server_id server_id,
+			 DATA_BLOB *data)
+{
+	struct winbindd_child *child;
+
+	DEBUG(10,("winbind_msg_debug: got debug message.\n"));
+	
+	debug_message(msg_ctx, private_data, MSG_DEBUG, server_id, data);
+
+	for (child = children; child != NULL; child = child->next) {
+
+		DEBUG(10,("winbind_msg_debug: sending message to pid %u.\n",
+			(unsigned int)child->pid));
+
+		messaging_send_buf(msg_ctx, pid_to_procid(child->pid),
+			   MSG_DEBUG,
+			   data->data,
+			   strlen((char *) data->data) + 1);
+	}
+}
+
 /* Set our domains as offline and forward the offline message to our children. */
 
 void winbind_msg_offline(struct messaging_context *msg_ctx,
@@ -1044,6 +1074,8 @@ static bool fork_domain_child(struct winbindd_child *child)
 			     MSG_DUMP_EVENT_LIST, NULL);
 	messaging_deregister(winbind_messaging_context(),
 			     MSG_WINBIND_DUMP_DOMAIN_LIST, NULL);
+	messaging_deregister(winbind_messaging_context(),
+			     MSG_DEBUG, NULL);
 
 	/* Handle online/offline messages. */
 	messaging_register(winbind_messaging_context(), NULL,
@@ -1054,6 +1086,8 @@ static bool fork_domain_child(struct winbindd_child *child)
 			   MSG_WINBIND_ONLINESTATUS, child_msg_onlinestatus);
 	messaging_register(winbind_messaging_context(), NULL,
 			   MSG_DUMP_EVENT_LIST, child_msg_dump_event_list);
+	messaging_register(winbind_messaging_context(), NULL,
+			   MSG_DEBUG, debug_message);
 
 	if ( child->domain ) {
 		child->domain->startup = True;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list