diff options
-rw-r--r-- | src/sssd/sssd_domains.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/sssd/sssd_domains.c b/src/sssd/sssd_domains.c index 3f8d418..a226e27 100644 --- a/src/sssd/sssd_domains.c +++ b/src/sssd/sssd_domains.c @@ -57,14 +57,6 @@ sssd_domain_get_attrs(sss_sifp_attr **attrs, error = sss_sifp_find_attr_as_string(attrs, "provider", &out->provider); check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done); - error = sss_sifp_find_attr_as_string_array(attrs, "primary_servers", - &out->num_primary, &out->primary_servers); - check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done); - - error = sss_sifp_find_attr_as_string_array(attrs, "backup_servers", - &out->num_backup, &out->backup_servers); - check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done); - error = sss_sifp_find_attr_as_uint32(attrs, "min_id", &out->min_id); check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done); @@ -99,6 +91,21 @@ sssd_domain_get_attrs(sss_sifp_attr **attrs, &out->parent_domain); check_sss_sifp_error(error, ret, SSSD_METHOD_ERROR_FAILED, done); + /* server list may be empty */ + error = sss_sifp_find_attr_as_string_array(attrs, "primary_servers", + &out->num_primary, &out->primary_servers); + if (error != SSS_SIFP_OK && error != SSS_SIFP_ATTR_NULL) { + ret = SSSD_METHOD_ERROR_FAILED; + goto done; + } + + error = sss_sifp_find_attr_as_string_array(attrs, "backup_servers", + &out->num_backup, &out->backup_servers); + if (error != SSS_SIFP_OK && error != SSS_SIFP_ATTR_NULL) { + ret = SSSD_METHOD_ERROR_FAILED; + goto done; + } + ret = SSSD_METHOD_ERROR_OK; done: |