summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/libcli/raw/rawrequest.c13
-rw-r--r--source4/libcli/raw/rawtrans.c5
2 files changed, 14 insertions, 4 deletions
diff --git a/source4/libcli/raw/rawrequest.c b/source4/libcli/raw/rawrequest.c
index ce6cd0a1a4..9c53c4b18c 100644
--- a/source4/libcli/raw/rawrequest.c
+++ b/source4/libcli/raw/rawrequest.c
@@ -304,6 +304,19 @@ BOOL cli_request_receive(struct cli_request *req)
/*
+ receive another reply to a request - this is used for requests that
+ have multi-part replies (such as SMBtrans2)
+*/
+BOOL cli_request_receive_more(struct cli_request *req)
+{
+ req->state = CLI_REQUEST_RECV;
+ DLIST_ADD(req->transport->pending_recv, req);
+
+ return cli_request_receive(req);
+}
+
+
+/*
handle oplock break requests from the server - return True if the request was
an oplock break
*/
diff --git a/source4/libcli/raw/rawtrans.c b/source4/libcli/raw/rawtrans.c
index fb2abf3e2d..5dde753368 100644
--- a/source4/libcli/raw/rawtrans.c
+++ b/source4/libcli/raw/rawtrans.c
@@ -180,10 +180,7 @@ NTSTATUS smb_raw_trans2_recv(struct cli_request *req,
if (total_data <= parms->out.data.length && total_param <= parms->out.params.length)
break;
- /* to receive more requests we need to mark this request as not received */
- req->in.buffer = NULL;
-
- if (!cli_request_receive(req)) {
+ if (!cli_request_receive_more(req)) {
req->status = NT_STATUS_UNSUCCESSFUL;
return cli_request_destroy(req);
}