summaryrefslogtreecommitdiffstats
path: root/source3/smbd/process.c
diff options
context:
space:
mode:
authorAravind Srinivasan <aravind.srinivasan@isilon.com>2009-06-16 15:11:32 -0700
committerSteven Danneman <steven.danneman@isilon.com>2009-06-22 19:09:37 -0700
commit5a4d61810961af199859dfb52981632bfe594e95 (patch)
tree966ff8100e8ed1edcf57f83ea5c8a0006baecfd8 /source3/smbd/process.c
parent36a8abce4f737102b5a2acf3c0e221391079831d (diff)
downloadsamba-5a4d61810961af199859dfb52981632bfe594e95.tar.gz
samba-5a4d61810961af199859dfb52981632bfe594e95.tar.xz
samba-5a4d61810961af199859dfb52981632bfe594e95.zip
s3: forward MSG_DEBUG from smbd parent to all children
Before 3.3, an smbcontrol debug message sent to the target "smbd" would actually be sent to all running processes including nmbd and winbindd. This behavior was changed in 3.3 so that the "smbd" target would only send a message to the process found in smbd.pid, while the "all" target would send a message to all processes. The ability to set the debug level of all processes within a single daemon, without specifying each pid is quite useful. This was implemented in winbindd in 065760ed. This patch does the same thing for smbd. Upon receiving a MSG_DEBUG the parent smbd will rebroadcast it to all of its children. The printing process has been added to the list of smbd child processes, and we now always track the number of smbd children regardless of the "max smbd processes" setting.
Diffstat (limited to 'source3/smbd/process.c')
-rw-r--r--source3/smbd/process.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index 0a3777afe0..b26bc150db 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -2103,6 +2103,15 @@ void smbd_process(void)
messaging_register(smbd_messaging_context(), NULL,
MSG_SMB_CLOSE_FILE, msg_close_file);
+ /*
+ * Use the default MSG_DEBUG handler to avoid rebroadcasting
+ * MSGs to all child processes
+ */
+ messaging_deregister(smbd_messaging_context(),
+ MSG_DEBUG, NULL);
+ messaging_register(smbd_messaging_context(), NULL,
+ MSG_DEBUG, debug_message);
+
if ((lp_keepalive() != 0)
&& !(event_add_idle(smbd_event_context(), NULL,
timeval_set(lp_keepalive(), 0),