diff options
author | Andrew Bartlett <abartlet@samba.org> | 2008-05-21 12:13:45 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2008-05-21 12:13:45 +1000 |
commit | fdec7fdaf5d4150e14311d9b3bb2da7358a407ff (patch) | |
tree | 5fbeb5de11214711f780e69c5e9ad1210c2e861e /source4/libcli/composite/composite.c | |
parent | 2f773ff347ec2828f94f4980a3aedbde37009737 (diff) | |
parent | 6d4424cd45333c3029b0272528485dd2b3f8e620 (diff) | |
download | samba-fdec7fdaf5d4150e14311d9b3bb2da7358a407ff.tar.gz samba-fdec7fdaf5d4150e14311d9b3bb2da7358a407ff.tar.bz2 samba-fdec7fdaf5d4150e14311d9b3bb2da7358a407ff.zip |
Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into 4-0-local
(This used to be commit 7594f79db6a0e8a46e2863829e5e050b03dfaec1)
Diffstat (limited to 'source4/libcli/composite/composite.c')
-rw-r--r-- | source4/libcli/composite/composite.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/source4/libcli/composite/composite.c b/source4/libcli/composite/composite.c index 966f56cba8..3e3f224f47 100644 --- a/source4/libcli/composite/composite.c +++ b/source4/libcli/composite/composite.c @@ -69,6 +69,17 @@ _PUBLIC_ NTSTATUS composite_wait(struct composite_context *c) return c->status; } +/* + block until a composite function has completed, then return the status. + Free the composite context before returning +*/ +_PUBLIC_ NTSTATUS composite_wait_free(struct composite_context *c) +{ + NTSTATUS status = composite_wait(c); + talloc_free(c); + return status; +} + /* callback from composite_done() and composite_error() @@ -94,6 +105,12 @@ static void composite_trigger(struct event_context *ev, struct timed_event *te, _PUBLIC_ void composite_error(struct composite_context *ctx, NTSTATUS status) { + /* you are allowed to pass NT_STATUS_OK to composite_error(), in which + case it is equivalent to composite_done() */ + if (NT_STATUS_IS_OK(status)) { + composite_done(ctx); + return; + } if (!ctx->used_wait && !ctx->async.fn) { event_add_timed(ctx->event_ctx, ctx, timeval_zero(), composite_trigger, ctx); } @@ -187,7 +204,7 @@ _PUBLIC_ void composite_continue_smb2(struct composite_context *ctx, { if (composite_nomem(new_req, ctx)) return; new_req->async.fn = continuation; - new_req->async.private = private_data; + new_req->async.private_data = private_data; } _PUBLIC_ void composite_continue_nbt(struct composite_context *ctx, |