s4:dsdb Make samba_dsdb easier to use in upgrades - assume default values
authorAndrew Bartlett <abartlet@samba.org>
Wed, 25 Nov 2009 07:49:42 +0000 (18:49 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 25 Nov 2009 08:19:32 +0000 (19:19 +1100)
source4/dsdb/samdb/ldb_modules/samba_dsdb.c

index d561780569013eb76073832d07b1899e256a106c..ee7e42ef9bc81b47b180a4e704ec2fa6d5350223 100644 (file)
@@ -237,14 +237,17 @@ static int samba_dsdb_init(struct ldb_module *module)
        } while (0)
 
        ret = dsdb_module_search_dn(module, tmp_ctx, &res, samba_dsdb_dn, samba_dsdb_attrs, 0);
-       if (ret != LDB_SUCCESS) {
+       if (ret == LDB_ERR_NO_SUCH_OBJECT) {
+               backendType = "ldb";
+               serverRole = "domain controller";
+       } else if (ret == LDB_SUCCESS) {
+               backendType = ldb_msg_find_attr_as_string(res->msgs[0], "backendType", "ldb");
+               serverRole = ldb_msg_find_attr_as_string(res->msgs[0], "serverRole", "domain controller");
+       } else {
                talloc_free(tmp_ctx);
                return ret;
        }
 
-       backendType = ldb_msg_find_attr_as_string(res->msgs[0], "backendType", "ldb");
-       serverRole = ldb_msg_find_attr_as_string(res->msgs[0], "serverRole", NULL);
-
        backend_modules = NULL;
        if (strcasecmp(backendType, "ldb") == 0) {
                if (strcasecmp(serverRole, "dc") == 0 || strcasecmp(serverRole, "domain controller") == 0) {