From 05379f01252fc8b449f36130bcf00c321d7a1c37 Mon Sep 17 00:00:00 2001 From: Bo Yang Date: Thu, 14 May 2009 10:13:12 +0800 Subject: s3: return proper error code in cli_smb_req_send Signed-off-by: Bo Yang --- source3/libsmb/clireadwrite.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'source3/libsmb/clireadwrite.c') diff --git a/source3/libsmb/clireadwrite.c b/source3/libsmb/clireadwrite.c index 4e256ede57..d38de19508 100644 --- a/source3/libsmb/clireadwrite.c +++ b/source3/libsmb/clireadwrite.c @@ -139,13 +139,19 @@ struct tevent_req *cli_read_andx_send(TALLOC_CTX *mem_ctx, off_t offset, size_t size) { struct tevent_req *req, *subreq; + NTSTATUS status; req = cli_read_andx_create(mem_ctx, ev, cli, fnum, offset, size, &subreq); - if ((req == NULL) || !cli_smb_req_send(subreq)) { - TALLOC_FREE(req); + if (req == NULL) { return NULL; } + + status = cli_smb_req_send(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return tevent_req_post(req, ev); + } return req; } @@ -870,13 +876,19 @@ struct tevent_req *cli_write_andx_send(TALLOC_CTX *mem_ctx, off_t offset, size_t size) { struct tevent_req *req, *subreq; + NTSTATUS status; req = cli_write_andx_create(mem_ctx, ev, cli, fnum, mode, buf, offset, size, NULL, 0, &subreq); - if ((req == NULL) || !cli_smb_req_send(subreq)) { - TALLOC_FREE(req); + if (req == NULL) { return NULL; } + + status = cli_smb_req_send(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return tevent_req_post(req, ev); + } return req; } -- cgit