From fe30cb2d1932401b5507af9f12149506cf0ae749 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn@samba.org>
Date: Tue, 7 Apr 2015 16:12:18 +0200
Subject: [PATCH] PATCHSET25: rpcclient: Fix the timeout command

https://bugzilla.samba.org/show_bug.cgi?id=11199

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>

(cherry picked from commit 2bca4cdc6f83dce48c73a33288c4fd3ae80f883b)
---
 source3/rpcclient/rpcclient.c | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c
index c2f3e4c..0dbcd01 100644
--- a/source3/rpcclient/rpcclient.c
+++ b/source3/rpcclient/rpcclient.c
@@ -481,8 +481,6 @@ static NTSTATUS cmd_seal(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 static NTSTATUS cmd_timeout(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 			    int argc, const char **argv)
 {
-	struct cmd_list *tmp;
-
 	if (argc > 2) {
 		printf("Usage: %s timeout\n", argv[0]);
 		return NT_STATUS_OK;
@@ -490,19 +488,6 @@ static NTSTATUS cmd_timeout(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 
 	if (argc == 2) {
 		timeout = atoi(argv[1]);
-
-		for (tmp = cmd_list; tmp; tmp = tmp->next) {
-
-			struct cmd_set *tmp_set;
-
-			for (tmp_set = tmp->cmd_set; tmp_set->name; tmp_set++) {
-				if (tmp_set->rpc_pipe == NULL) {
-					continue;
-				}
-
-				rpccli_set_timeout(tmp_set->rpc_pipe, timeout);
-			}
-		}
 	}
 
 	printf("timeout is %d\n", timeout);
@@ -791,6 +776,11 @@ static NTSTATUS do_cmd(struct cli_state *cli,
 		}
 	}
 
+	/* Set timeout for new connections */
+	if (cmd_entry->rpc_pipe) {
+		rpccli_set_timeout(cmd_entry->rpc_pipe, timeout);
+	}
+
 	/* Run command */
 
 	if ( cmd_entry->returntype == RPC_RTYPE_NTSTATUS ) {
@@ -1124,7 +1114,8 @@ out_free:
 
 	/* Load command lists */
 
-	timeout = cli_set_timeout(cli, 10000);
+	timeout = 10000;
+	cli_set_timeout(cli, timeout);
 
 	cmd_set = rpcclient_command_list;
 
-- 
2.1.0

