static NTSTATUS dsgetdcname_cached(TALLOC_CTX *mem_ctx, struct messaging_context *msg_ctx, const char *domain_name, struct GUID *domain_guid, uint32_t flags, const char *site_name, struct netr_DsRGetDCNameInfo **info) { NTSTATUS status; bool expired = false; status = dsgetdcname_cache_fetch(mem_ctx, domain_name, domain_guid, flags, site_name, info, &expired); if (!NT_STATUS_IS_OK(status)) { DEBUG(10,("dsgetdcname_cached: cache fetch failed with: %s\n", nt_errstr(status))); return NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND; } if (flags & DS_BACKGROUND_ONLY) { return status; } if (expired) { status = dsgetdcname_cache_refresh(mem_ctx, msg_ctx, domain_name, domain_guid, flags, site_name, *info); if (!NT_STATUS_IS_OK(status)) { return status; } } return status; }
static NTSTATUS dsgetdcname_cached(TALLOC_CTX *mem_ctx, struct messaging_context *msg_ctx, const char *domain_name, const struct GUID *domain_guid, uint32_t flags, const char *site_name, struct netr_DsRGetDCNameInfo **info) { NTSTATUS status; status = dsgetdcname_cache_fetch(mem_ctx, domain_name, domain_guid, flags, site_name, info); if (!NT_STATUS_IS_OK(status) && !NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { DEBUG(10,("dsgetdcname_cached: cache fetch failed with: %s\n", nt_errstr(status))); return NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND; } if (flags & DS_BACKGROUND_ONLY) { return status; } if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { struct netr_DsRGetDCNameInfo *dc_info; status = dsgetdcname(mem_ctx, msg_ctx, domain_name, domain_guid, site_name, flags | DS_FORCE_REDISCOVERY, &dc_info); if (!NT_STATUS_IS_OK(status)) { return status; } *info = dc_info; } return status; }