dpward / rpms / sssd

Forked from rpms/sssd 3 years ago
Clone
Blob Blame History Raw
From dfebe8a952561e51fe1d603886ba4e979b29d889 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek@redhat.com>
Date: Fri, 13 Dec 2013 20:11:11 +0100
Subject: [PATCH 30/31] AD: Enable fallback to LDAP of trusted domain

Since we have the LDAP port of a trusted AD GC always available now, we
can always perform a fallback.
---
 src/providers/ad/ad_common.c      | 14 +-------------
 src/tests/cmocka/test_ad_common.c |  7 ++++---
 2 files changed, 5 insertions(+), 16 deletions(-)

diff --git a/src/providers/ad/ad_common.c b/src/providers/ad/ad_common.c
index a5ea4f587f30575a5903d8ae1a459f53512c011f..99fa4c07af2a79bb3ca195214ddb0dbd60c61620 100644
--- a/src/providers/ad/ad_common.c
+++ b/src/providers/ad/ad_common.c
@@ -1133,23 +1133,11 @@ ad_gc_conn_list(TALLOC_CTX *mem_ctx, struct ad_id_ctx *ad_ctx,
     /* Always try GC first */
     if (dp_opt_get_bool(ad_ctx->ad_options->basic, AD_ENABLE_GC)) {
         clist[cindex] = ad_ctx->gc_ctx;
-        if (IS_SUBDOMAIN(dom) == true) {
-            clist[cindex]->ignore_mark_offline = false;
-            /* Subdomain users are only present in GC. */
-            return clist;
-        }
-        /* fall back to ldap if gc is not available */
         clist[cindex]->ignore_mark_offline = true;
         cindex++;
     }
 
-    if (IS_SUBDOMAIN(dom) == false) {
-        /* With root domain users we have the option to
-         * fall back to LDAP in case ie POSIX attributes
-         * are used but not replicated to GC
-         */
-        clist[cindex] = ad_ctx->ldap_ctx;
-    }
+    clist[cindex] = ad_get_dom_ldap_conn(ad_ctx, dom);
 
     return clist;
 }
diff --git a/src/tests/cmocka/test_ad_common.c b/src/tests/cmocka/test_ad_common.c
index 07502b82d43d730562c60125b639d8e7d1034458..bbd56b1b9b78cb78cb24726522822ad2f7ae9980 100644
--- a/src/tests/cmocka/test_ad_common.c
+++ b/src/tests/cmocka/test_ad_common.c
@@ -176,8 +176,9 @@ void test_conn_list(void **state)
     assert_non_null(conn_list);
 
     assert_true(conn_list[0] == test_ctx->ad_ctx->gc_ctx);
-    assert_false(conn_list[0]->ignore_mark_offline);
-    assert_null(conn_list[1]);
+    assert_true(conn_list[0]->ignore_mark_offline);
+    assert_true(conn_list[1] == test_ctx->subdom_ad_ctx->ldap_ctx);
+    assert_false(conn_list[1]->ignore_mark_offline);
     talloc_free(conn_list);
 
     dp_opt_set_bool(test_ctx->ad_ctx->ad_options->basic, AD_ENABLE_GC, false);
@@ -195,7 +196,7 @@ void test_conn_list(void **state)
     conn_list = ad_gc_conn_list(test_ctx, test_ctx->ad_ctx, test_ctx->subdom);
     assert_non_null(conn_list);
 
-    assert_null(conn_list[0]);
+    assert_true(conn_list[0] == test_ctx->subdom_ad_ctx->ldap_ctx);
     talloc_free(conn_list);
 }
 
-- 
1.8.4.2