diff options
author | Stefan Metzmacher <metze@samba.org> | 2010-08-12 10:50:47 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2010-08-12 14:31:16 +0200 |
commit | af89b460f72acb843b57a80a8f61a26056dc0dd2 (patch) | |
tree | 25a4a1994dfed6a0d83bf9db3966438d9410ae25 | |
parent | a2e1f54b3eac810e147ee5e608c6bdee03f5a8a7 (diff) | |
download | samba-af89b460f72acb843b57a80a8f61a26056dc0dd2.tar.gz samba-af89b460f72acb843b57a80a8f61a26056dc0dd2.tar.bz2 samba-af89b460f72acb843b57a80a8f61a26056dc0dd2.zip |
s4:librpc/rpc: autodetect the need of async call logic
metze
-rw-r--r-- | source4/librpc/rpc/dcerpc.c | 13 | ||||
-rw-r--r-- | source4/librpc/rpc/dcerpc.h | 1 |
2 files changed, 6 insertions, 8 deletions
diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c index a04dbb1ea9..3d5080734a 100644 --- a/source4/librpc/rpc/dcerpc.c +++ b/source4/librpc/rpc/dcerpc.c @@ -897,7 +897,6 @@ req_done: static struct rpc_request *dcerpc_request_send(struct dcerpc_pipe *p, const struct GUID *object, uint16_t opnum, - bool async, DATA_BLOB *stub_data) { struct rpc_request *req; @@ -916,7 +915,6 @@ static struct rpc_request *dcerpc_request_send(struct dcerpc_pipe *p, req->payload = data_blob(NULL, 0); req->flags = 0; req->fault_code = 0; - req->async_call = async; req->ignore_timeout = false; req->async.callback = NULL; req->async.private_data = NULL; @@ -967,6 +965,7 @@ static void dcerpc_ship_next_request(struct dcerpc_connection *c) uint32_t remaining, chunk_size; bool first_packet = true; size_t sig_size = 0; + bool need_async = false; req = c->request_queue; if (req == NULL) { @@ -976,8 +975,8 @@ static void dcerpc_ship_next_request(struct dcerpc_connection *c) p = req->p; stub_data = &req->request_data; - if (!req->async_call && (c->pending != NULL)) { - return; + if (c->pending) { + need_async = true; } DLIST_REMOVE(c->request_queue, req); @@ -1045,7 +1044,7 @@ static void dcerpc_ship_next_request(struct dcerpc_connection *c) return; } - if (last_frag && !req->async_call) { + if (last_frag && !need_async) { do_trans = true; } @@ -1119,7 +1118,7 @@ NTSTATUS dcerpc_request(struct dcerpc_pipe *p, { struct rpc_request *req; - req = dcerpc_request_send(p, object, opnum, false, stub_data_in); + req = dcerpc_request_send(p, object, opnum, stub_data_in); if (req == NULL) { return NT_STATUS_NO_MEMORY; } @@ -1385,7 +1384,7 @@ struct rpc_request *dcerpc_ndr_request_send(struct dcerpc_pipe *p, dump_data(10, request.data, request.length); /* make the actual dcerpc request */ - req = dcerpc_request_send(p, object, opnum, async, &request); + req = dcerpc_request_send(p, object, opnum, &request); if (req != NULL) { req->ndr.table = table; diff --git a/source4/librpc/rpc/dcerpc.h b/source4/librpc/rpc/dcerpc.h index b1875045bd..4546529a5f 100644 --- a/source4/librpc/rpc/dcerpc.h +++ b/source4/librpc/rpc/dcerpc.h @@ -230,7 +230,6 @@ struct rpc_request { const struct GUID *object; uint16_t opnum; DATA_BLOB request_data; - bool async_call; bool ignore_timeout; /* use by the ndr level async recv call */ |