From 27ce337277211f7536b7bd750bb42b8a87089fc4 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 2 Aug 2004 05:51:42 +0000 Subject: r1618: fixed the receipt of multi-part replies to SMBtrans2 (This used to be commit bd4106a8e57fc98d1feddc01b58f87f68164247a) --- source4/libcli/raw/rawrequest.c | 13 +++++++++++++ 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 @@ -303,6 +303,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); } -- cgit