diff options
author | Steven Danneman <steven.danneman@isilon.com> | 2008-05-21 20:16:33 -0700 |
---|---|---|
committer | Gerald W. Carter <jerry@samba.org> | 2008-05-22 13:55:57 -0500 |
commit | 96653e1ff7551dd9214dc14eed4029e2214598f8 (patch) | |
tree | ec0f71e07ec90bf6c1101ea779039e5c1c3cb3e1 /source3/winbindd/winbindd_domain.c | |
parent | f6a70e02498ba935f9ab6b9691c024f9a9bfe08e (diff) | |
download | samba-96653e1ff7551dd9214dc14eed4029e2214598f8.tar.gz |
Make WINBINDD_LIST_GROUPS handler asynchronous.
Previously WINBINDD_LIST_GROUPS requests (ex: wbinfo -g) were handled by the
winbindd parent process in a sequential fashion. This patch, delegates the work
to the winbindd children so that the request is handled much faster in large
domain topologies, and doesn't block the parent from receiving new requests.
The core group enumeration and conversion that was handled in
winbindd_list_groups() has been moved into winbindd_dual_list_groups() to be
done by the child.
The parent winbindd_list_groups() simply calls each of the children
asynchronously.
listgroups_recv() aggregates the final group list that will be returned to the
client and tracks how many of the children have returned their lists.
The domain name of the child is passed back through the callbacks to be used in
debugging messages.
There are also several fixes to typos in various comments.
(This used to be commit 037b9689d9042a398cb91e4628a82fcdfa913c21)
Diffstat (limited to 'source3/winbindd/winbindd_domain.c')
-rw-r--r-- | source3/winbindd/winbindd_domain.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/source3/winbindd/winbindd_domain.c b/source3/winbindd/winbindd_domain.c index 1b758cdf40c..4d10f49ca21 100644 --- a/source3/winbindd/winbindd_domain.c +++ b/source3/winbindd/winbindd_domain.c @@ -50,6 +50,10 @@ static const struct winbindd_child_dispatch_table domain_dispatch_table[] = { .struct_cmd = WINBINDD_LOOKUPRIDS, .struct_fn = winbindd_dual_lookuprids, },{ + .name = "LIST_GROUPS", + .struct_cmd = WINBINDD_LIST_GROUPS, + .struct_fn = winbindd_dual_list_groups, + },{ .name = "LIST_TRUSTDOM", .struct_cmd = WINBINDD_LIST_TRUSTDOM, .struct_fn = winbindd_dual_list_trusted_domains, |