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