extern struct winbindd_methods ads_methods;
+static bool ldap_reconnect_need_retry(NTSTATUS status,
+ struct winbindd_domain *domain)
+{
+ if (NT_STATUS_IS_OK(status)) {
+ return false;
+ }
+
+ if (!NT_STATUS_IS_ERR(status)) {
+ return false;
+ }
+
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
+ return false;
+ }
+
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_USER)) {
+ return false;
+ }
+
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_GROUP)) {
+ return false;
+ }
+
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_ALIAS)) {
+ return false;
+ }
+
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_MEMBER)) {
+ return false;
+ }
+
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_DOMAIN)) {
+ return false;
+ }
+
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_PRIVILEGE)) {
+ return false;
+ }
+
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NO_MEMORY)) {
+ return false;
+ }
+
+ return true;
+}
+
/* List all users */
static NTSTATUS query_user_list(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
result = ads_methods.query_user_list(domain, mem_ctx, rids);
- if (reconnect_need_retry(result, domain)) {
+ if (ldap_reconnect_need_retry(result, domain)) {
result = ads_methods.query_user_list(domain, mem_ctx, rids);
}
result = ads_methods.enum_dom_groups(domain, mem_ctx,
num_entries, info);
- if (reconnect_need_retry(result, domain)) {
+ if (ldap_reconnect_need_retry(result, domain)) {
result = ads_methods.enum_dom_groups(domain, mem_ctx,
num_entries, info);
}
result = ads_methods.enum_local_groups(domain, mem_ctx,
num_entries, info);
- if (reconnect_need_retry(result, domain)) {
+ if (ldap_reconnect_need_retry(result, domain)) {
result = ads_methods.enum_local_groups(domain, mem_ctx,
num_entries, info);
}
result = ads_methods.lookup_usergroups(domain, mem_ctx, user_sid,
num_groups, user_gids);
- if (reconnect_need_retry(result, domain)) {
+ if (ldap_reconnect_need_retry(result, domain)) {
result = ads_methods.lookup_usergroups(domain, mem_ctx,
user_sid, num_groups,
user_gids);
num_names, sid_mem, names,
name_types);
- if (reconnect_need_retry(result, domain)) {
+ if (ldap_reconnect_need_retry(result, domain)) {
result = ads_methods.lookup_groupmem(domain, mem_ctx, group_sid,
type, num_names, sid_mem,
names, name_types);
result = ads_methods.sequence_number(domain, seq);
- if (reconnect_need_retry(result, domain)) {
+ if (ldap_reconnect_need_retry(result, domain)) {
result = ads_methods.sequence_number(domain, seq);
}