svn commit: samba r19340 - in branches: SAMBA_3_0/source/nsswitch SAMBA_3_0/source/rpcclient SAMBA_3_0_23/source/nsswitch SAMBA_3_0_23/source/rpcclient

gd at samba.org gd at samba.org
Mon Oct 16 14:29:15 GMT 2006


Author: gd
Date: 2006-10-16 14:29:14 +0000 (Mon, 16 Oct 2006)
New Revision: 19340

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19340

Log:
Wait longer then 10 seconds for a samr_query_groupmem lookup to succeed.

Guenther

Modified:
   branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c
   branches/SAMBA_3_0/source/rpcclient/cmd_samr.c
   branches/SAMBA_3_0_23/source/nsswitch/winbindd_rpc.c
   branches/SAMBA_3_0_23/source/rpcclient/cmd_samr.c


Changeset:
Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c	2006-10-16 13:06:41 UTC (rev 19339)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_rpc.c	2006-10-16 14:29:14 UTC (rev 19340)
@@ -615,6 +615,7 @@
 	unsigned int j;
 	fstring sid_string;
 	struct rpc_pipe_client *cli;
+	unsigned int orig_timeout;
 
 	DEBUG(10,("rpc: lookup_groupmem %s sid=%s\n", domain->name,
 		  sid_to_string(sid_string, group_sid)));
@@ -637,10 +638,18 @@
         /* Step #1: Get a list of user rids that are the members of the
            group. */
 
+	/* 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);
+
         result = rpccli_samr_query_groupmem(cli, mem_ctx,
 					    &group_pol, num_names, &rid_mem,
 					    name_types);
 
+	/* And restore our original timeout. */
+	cli_set_timeout(cli->cli, orig_timeout);
+
 	rpccli_samr_close(cli, mem_ctx, &group_pol);
 
         if (!NT_STATUS_IS_OK(result))

Modified: branches/SAMBA_3_0/source/rpcclient/cmd_samr.c
===================================================================
--- branches/SAMBA_3_0/source/rpcclient/cmd_samr.c	2006-10-16 13:06:41 UTC (rev 19339)
+++ branches/SAMBA_3_0/source/rpcclient/cmd_samr.c	2006-10-16 14:29:14 UTC (rev 19340)
@@ -751,6 +751,7 @@
 	uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
 	int i;
 	fstring			server;
+	unsigned int old_timeout;
 	
 	if ((argc < 2) || (argc > 3)) {
 		printf("Usage: %s rid [access mask]\n", argv[0]);
@@ -785,10 +786,15 @@
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
 
+	/* Make sure to wait for our DC's reply */
+	old_timeout = cli_set_timeout(cli->cli, 30000); /* 30 seconds. */
+
 	result = rpccli_samr_query_groupmem(cli, mem_ctx, &group_pol,
 					 &num_members, &group_rids,
 					 &group_attrs);
 
+	cli_set_timeout(cli->cli, old_timeout);
+
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
 

Modified: branches/SAMBA_3_0_23/source/nsswitch/winbindd_rpc.c
===================================================================
--- branches/SAMBA_3_0_23/source/nsswitch/winbindd_rpc.c	2006-10-16 13:06:41 UTC (rev 19339)
+++ branches/SAMBA_3_0_23/source/nsswitch/winbindd_rpc.c	2006-10-16 14:29:14 UTC (rev 19340)
@@ -563,6 +563,7 @@
 	unsigned int j;
 	fstring sid_string;
 	struct rpc_pipe_client *cli;
+	unsigned int orig_timeout;
 
 	DEBUG(10,("rpc: lookup_groupmem %s sid=%s\n", domain->name,
 		  sid_to_string(sid_string, group_sid)));
@@ -585,10 +586,18 @@
         /* Step #1: Get a list of user rids that are the members of the
            group. */
 
+	/* 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);
+
         result = rpccli_samr_query_groupmem(cli, mem_ctx,
 					    &group_pol, num_names, &rid_mem,
 					    name_types);
 
+	/* And restore our original timeout. */
+	cli_set_timeout(cli->cli, orig_timeout);
+
 	rpccli_samr_close(cli, mem_ctx, &group_pol);
 
         if (!NT_STATUS_IS_OK(result))

Modified: branches/SAMBA_3_0_23/source/rpcclient/cmd_samr.c
===================================================================
--- branches/SAMBA_3_0_23/source/rpcclient/cmd_samr.c	2006-10-16 13:06:41 UTC (rev 19339)
+++ branches/SAMBA_3_0_23/source/rpcclient/cmd_samr.c	2006-10-16 14:29:14 UTC (rev 19340)
@@ -785,6 +785,7 @@
 	uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
 	int i;
 	fstring			server;
+	unsigned int old_timeout;
 	
 	if ((argc < 2) || (argc > 3)) {
 		printf("Usage: %s rid [access mask]\n", argv[0]);
@@ -819,10 +820,15 @@
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
 
+	/* Make sure to wait for our DC's reply */
+	old_timeout = cli_set_timeout(cli->cli, 30000); /* 30 seconds. */
+
 	result = rpccli_samr_query_groupmem(cli, mem_ctx, &group_pol,
 					 &num_members, &group_rids,
 					 &group_attrs);
 
+	cli_set_timeout(cli->cli, old_timeout);
+
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
 



More information about the samba-cvs mailing list