summaryrefslogtreecommitdiffstats
path: root/source/winbindd/winbindd_ads.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/winbindd/winbindd_ads.c')
-rw-r--r--source/winbindd/winbindd_ads.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/source/winbindd/winbindd_ads.c b/source/winbindd/winbindd_ads.c
index c1301585b34..cef36c4555d 100644
--- a/source/winbindd/winbindd_ads.c
+++ b/source/winbindd/winbindd_ads.c
@@ -1119,6 +1119,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
/* handle sids not resolved from cache by lsa_lookup_sids */
if (num_nocache > 0) {
+ unsigned int orig_timeout;
status = cm_connect_lsa(domain, tmp_ctx, &cli, &lsa_policy);
@@ -1126,6 +1127,13 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
goto done;
}
+ /*
+ * This call can take a long time
+ * allow the server to time out.
+ * 35 seconds should do it.
+ */
+ orig_timeout = cli_set_timeout(cli->cli, 35000);
+
status = rpccli_lsa_lookup_sids(cli, tmp_ctx,
&lsa_policy,
num_nocache,
@@ -1134,6 +1142,9 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
&names_nocache,
&name_types_nocache);
+ /* And restore our original timeout. */
+ cli_set_timeout(cli->cli, orig_timeout);
+
if (!(NT_STATUS_IS_OK(status) ||
NT_STATUS_EQUAL(status, STATUS_SOME_UNMAPPED) ||
NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)))
@@ -1148,6 +1159,13 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
goto done;
}
+ /*
+ * This call can take a long time
+ * allow the server to time out.
+ * 35 seconds should do it.
+ */
+ orig_timeout = cli_set_timeout(cli->cli, 35000);
+
status = rpccli_lsa_lookup_sids(cli, tmp_ctx,
&lsa_policy,
num_nocache,
@@ -1155,6 +1173,9 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain *domain,
&domains_nocache,
&names_nocache,
&name_types_nocache);
+
+ /* And restore our original timeout. */
+ cli_set_timeout(cli->cli, orig_timeout);
}
if (NT_STATUS_IS_OK(status) ||