summaryrefslogtreecommitdiff
path: root/source3/libsmb/async_smb.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2008-08-27 19:26:40 +0200
committerVolker Lendecke <vl@samba.org>2008-08-28 18:15:59 +0200
commitbb0fc9cfceab7e961eaa9049d111121609ff8174 (patch)
treeb0c7868eb295412b3b0bbe7f2510dfbdbd74d915 /source3/libsmb/async_smb.c
parentb054f14111337c826548d7728dc2b0a66ab5beae (diff)
downloadsamba-bb0fc9cfceab7e961eaa9049d111121609ff8174.tar.gz
samba-bb0fc9cfceab7e961eaa9049d111121609ff8174.tar.bz2
samba-bb0fc9cfceab7e961eaa9049d111121609ff8174.zip
Add cli_request->recv_helper
Necessary for requests with multiple replies (This used to be commit cb2e338eb33dfb4627f9b43456af0c86d7d268c6)
Diffstat (limited to 'source3/libsmb/async_smb.c')
-rw-r--r--source3/libsmb/async_smb.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/source3/libsmb/async_smb.c b/source3/libsmb/async_smb.c
index 4d6c32edfa..b5fa9c44b1 100644
--- a/source3/libsmb/async_smb.c
+++ b/source3/libsmb/async_smb.c
@@ -409,6 +409,7 @@ bool cli_chain_cork(struct cli_state *cli, struct event_context *ev,
req->async = NULL;
req->enc_state = NULL;
+ req->recv_helper.fn = NULL;
SSVAL(req->outbuf, smb_tid, cli->cnum);
cli_setup_packet_buf(cli, req->outbuf);
@@ -822,7 +823,11 @@ static void handle_incoming_pdu(struct cli_state *cli)
* destructor cli_async_req_destructor().
*/
if (req->async[i] != NULL) {
- async_req_done(req->async[i]);
+ if (req->recv_helper.fn != NULL) {
+ req->recv_helper.fn(req->async[i]);
+ } else {
+ async_req_done(req->async[i]);
+ }
}
}
return;