summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2012-12-06 14:31:45 +0100
committerJim McDonough <jmcd@samba.org>2012-12-07 22:38:43 +0100
commitdf0f59f66cca61eee967e89dc659af4ba33f0e6f (patch)
tree5239b378ac880f9aa5ff03bc9a6ed55dc998369b
parent16d725b4f5ed77db865e2a3c27ae0eb4accca5a8 (diff)
downloadsamba-df0f59f66cca61eee967e89dc659af4ba33f0e6f.tar.gz
samba-df0f59f66cca61eee967e89dc659af4ba33f0e6f.tar.bz2
samba-df0f59f66cca61eee967e89dc659af4ba33f0e6f.zip
winbind: Make the code more readable in trustdom_list_done().
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Jim McDonough <jmcd@samba.org> Autobuild-User(master): Jim McDonough <jmcd@samba.org> Autobuild-Date(master): Fri Dec 7 22:38:43 CET 2012 on sn-devel-104
-rw-r--r--source3/winbindd/winbindd_util.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c
index 6e13ca8ba7..c32feb8951 100644
--- a/source3/winbindd/winbindd_util.c
+++ b/source3/winbindd/winbindd_util.c
@@ -303,6 +303,7 @@ static void trustdom_list_done(struct tevent_req *req)
struct dom_sid sid;
struct winbindd_domain *domain;
char *alternate_name = NULL;
+ bool domain_exists;
alt_name = strchr(p, '\\');
if (alt_name == NULL) {
@@ -336,22 +337,25 @@ static void trustdom_list_done(struct tevent_req *req)
if ( !strequal( alt_name, "(null)" ) )
alternate_name = alt_name;
- /* If we have an existing domain structure, calling
- add_trusted_domain() will update the SID if
- necessary. This is important because we need the
- SID for sibling domains */
+ /* Check if we already have a child for the domain */
+ domain_exists = (find_domain_from_name_noinit(p) != NULL);
- if ( find_domain_from_name_noinit(p) != NULL ) {
- domain = add_trusted_domain(p, alternate_name,
- &cache_methods,
- &sid);
- } else {
- domain = add_trusted_domain(p, alternate_name,
- &cache_methods,
- &sid);
- if (domain) {
- setup_domain_child(domain);
- }
+ /*
+ * We always call add_trusted_domain() cause on an existing
+ * domain structure, it will update the SID if necessary.
+ * This is important because we need the SID for sibling
+ * domains.
+ */
+ domain = add_trusted_domain(p, alternate_name,
+ &cache_methods,
+ &sid);
+
+ /*
+ * If the domain doesn't exist yet and got correctly added,
+ * setup a new domain child.
+ */
+ if (!domain_exists && domain != NULL) {
+ setup_domain_child(domain);
}
p=q;
if (p != NULL)