diff options
author | Jeremy Allison <jra@samba.org> | 2012-05-30 17:12:10 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2012-05-31 04:44:09 +0200 |
commit | 5d1a8d2a31390762c471229c2b115147ad0857fe (patch) | |
tree | 3cb5b02636243002d0b75e299f36298c739de249 | |
parent | 5e5f5692b8061e7151f80b155a229ce9bbb31ef9 (diff) | |
download | samba-5d1a8d2a31390762c471229c2b115147ad0857fe.tar.gz samba-5d1a8d2a31390762c471229c2b115147ad0857fe.tar.bz2 samba-5d1a8d2a31390762c471229c2b115147ad0857fe.zip |
Stop spamming the logs with "Could not remove pid XX from serverid.tdb" messages and initiating the cleanup function on every process death.
We now have many sub-processes from smbd that don't serve SMB1/SMB2 requests and
don't register themselves in the serverid.tdb. Only initiate the cleanup
from processes that were explicitly in the child list.
Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Thu May 31 04:44:09 CEST 2012 on sn-devel-104
-rw-r--r-- | source3/smbd/server.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c index ab4e971459..f71235f19f 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -416,6 +416,24 @@ static void remove_child_pid(struct smbd_parent_context *parent, struct smbd_child_pid *child; struct server_id child_id; + child_id = pid_to_procid(pid); + + for (child = parent->children; child != NULL; child = child->next) { + if (child->pid == pid) { + struct smbd_child_pid *tmp = child; + DLIST_REMOVE(parent->children, child); + TALLOC_FREE(tmp); + parent->num_children -= 1; + break; + } + } + + if (child == NULL) { + /* not all forked child processes are added to the children list */ + DEBUG(2, ("Could not find child %d -- ignoring\n", (int)pid)); + return; + } + if (unclean_shutdown) { /* a child terminated uncleanly so tickle all processes to see if they can grab any of the @@ -435,25 +453,10 @@ static void remove_child_pid(struct smbd_parent_context *parent, } } - child_id = pid_to_procid(pid); - if (!serverid_deregister(child_id)) { DEBUG(1, ("Could not remove pid %d from serverid.tdb\n", (int)pid)); } - - for (child = parent->children; child != NULL; child = child->next) { - if (child->pid == pid) { - struct smbd_child_pid *tmp = child; - DLIST_REMOVE(parent->children, child); - TALLOC_FREE(tmp); - parent->num_children -= 1; - return; - } - } - - /* not all forked child processes are added to the children list */ - DEBUG(2, ("Could not find child %d -- ignoring\n", (int)pid)); } /**************************************************************************** |