git.samba.org
/
abartlet
/
samba.git
/
.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
097db28
)
Streamline cli_push sync wrapper
author
Volker Lendecke
<vl@samba.org>
Sun, 5 Apr 2009 04:33:24 +0000
(06:33 +0200)
committer
Volker Lendecke
<vl@samba.org>
Mon, 6 Apr 2009 19:32:07 +0000
(21:32 +0200)
source3/libsmb/clireadwrite.c
patch
|
blob
|
history
diff --git
a/source3/libsmb/clireadwrite.c
b/source3/libsmb/clireadwrite.c
index 3b1af9e5a5de0b5f4b9eaed8c0fb5dae2f7f266b..bb1e2f66c27f11b3cf5ddef4699c290dac54095c 100644
(file)
--- a/
source3/libsmb/clireadwrite.c
+++ b/
source3/libsmb/clireadwrite.c
@@
-1216,32
+1216,41
@@
NTSTATUS cli_push(struct cli_state *cli, uint16_t fnum, uint16_t mode,
TALLOC_CTX *frame = talloc_stackframe();
struct event_context *ev;
struct async_req *req;
TALLOC_CTX *frame = talloc_stackframe();
struct event_context *ev;
struct async_req *req;
- NTSTATUS
result = NT_STATUS_NO_MEMORY
;
+ NTSTATUS
status = NT_STATUS_OK
;
- if (cli
->fd_event != NULL
) {
+ if (cli
_has_async_calls(cli)
) {
/*
* Can't use sync call while an async call is in flight
*/
/*
* Can't use sync call while an async call is in flight
*/
- return NT_STATUS_INVALID_PARAMETER;
+ status = NT_STATUS_INVALID_PARAMETER;
+ goto fail;
}
ev = event_context_init(frame);
if (ev == NULL) {
}
ev = event_context_init(frame);
if (ev == NULL) {
- goto nomem;
+ status = NT_STATUS_NO_MEMORY;
+ goto fail;
}
req = cli_push_send(frame, ev, cli, fnum, mode, start_offset,
window_size, source, priv);
if (req == NULL) {
}
req = cli_push_send(frame, ev, cli, fnum, mode, start_offset,
window_size, source, priv);
if (req == NULL) {
- goto nomem;
+ status = NT_STATUS_NO_MEMORY;
+ goto fail;
}
while (req->state < ASYNC_REQ_DONE) {
}
while (req->state < ASYNC_REQ_DONE) {
- event_loop_once(ev);
+ if (event_loop_once(ev) == -1) {
+ status = map_nt_error_from_unix(errno);
+ goto fail;
+ }
}
}
-
result
= cli_push_recv(req);
-
nomem
:
+
status
= cli_push_recv(req);
+
fail
:
TALLOC_FREE(frame);
TALLOC_FREE(frame);
- return result;
+ if (!NT_STATUS_IS_OK(status)) {
+ cli_set_error(cli, status);
+ }
+ return status;
}
}