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);
}
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;
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,
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");