svn commit: samba r22486 - in branches/SAMBA_4_0/source: librpc/rpc torture/rpc

metze at samba.org metze at samba.org
Mon Apr 23 12:31:13 GMT 2007


Author: metze
Date: 2007-04-23 12:31:12 +0000 (Mon, 23 Apr 2007)
New Revision: 22486

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

Log:
add a flag to ignore timeouts of a request and don't close
the connection on timeout

metze
Modified:
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc.c
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc.h
   branches/SAMBA_4_0/source/torture/rpc/echo.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc.c	2007-04-23 10:39:20 UTC (rev 22485)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc.c	2007-04-23 12:31:12 UTC (rev 22486)
@@ -673,6 +673,17 @@
 				   struct timeval t, void *private)
 {
 	struct rpc_request *req = talloc_get_type(private, struct rpc_request);
+
+	if (req->ignore_timeout) {
+		dcerpc_req_dequeue(req);
+		req->state = RPC_REQUEST_DONE;
+		req->status = NT_STATUS_IO_TIMEOUT;
+		if (req->async.callback) {
+			req->async.callback(req);
+		}
+		return;
+	}
+
 	dcerpc_connection_dead(req->p->conn, NT_STATUS_IO_TIMEOUT);
 }
 
@@ -945,6 +956,7 @@
 	req->flags = 0;
 	req->fault_code = 0;
 	req->async_call = async;
+	req->ignore_timeout = False;
 	req->async.callback = NULL;
 	req->async.private = NULL;
 	req->recv_handler = NULL;

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc.h
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc.h	2007-04-23 10:39:20 UTC (rev 22485)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc.h	2007-04-23 12:31:12 UTC (rev 22486)
@@ -246,6 +246,7 @@
 	uint16_t opnum;
 	DATA_BLOB request_data;
 	BOOL async_call;
+	BOOL ignore_timeout;
 
 	/* use by the ndr level async recv call */
 	struct {

Modified: branches/SAMBA_4_0/source/torture/rpc/echo.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/echo.c	2007-04-23 10:39:20 UTC (rev 22485)
+++ branches/SAMBA_4_0/source/torture/rpc/echo.c	2007-04-23 12:31:12 UTC (rev 22486)
@@ -388,8 +388,12 @@
 	r.in.seconds = 2;
 	p->request_timeout = 1;
 
-	torture_assert(tctx, req = dcerpc_echo_TestSleep_send(p, tctx, &r), 
-		"Failed to send async sleep request");
+	req = dcerpc_echo_TestSleep_send(p, tctx, &r);
+	if (!req) {
+		torture_comment(tctx, "Failed to send async sleep request\n");
+		goto failed;
+	}
+	req->ignore_timeout = True;
 
 	status	= dcerpc_ndr_request_recv(req);
 	torture_assert_ntstatus_equal(tctx, status, NT_STATUS_IO_TIMEOUT, 
@@ -408,6 +412,7 @@
 		torture_comment(tctx, "Failed to send async sleep request\n");
 		goto failed;
 	}
+	req->ignore_timeout = True;
 	status	= dcerpc_ndr_request_recv(req);
 	torture_assert_ntstatus_equal(tctx, status, NT_STATUS_IO_TIMEOUT, 
 		"request should have timed out");



More information about the samba-cvs mailing list