diff options
-rw-r--r-- | source4/libcli/raw/rawrequest.c | 13 | ||||
-rw-r--r-- | source4/libcli/raw/rawtrans.c | 5 |
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); } |