diff options
author | Stefan Metzmacher <metze@samba.org> | 2006-07-30 16:48:41 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:15:10 -0500 |
commit | 7e949c9fb12483df11c7e926e2c5ed8e4b9b9d20 (patch) | |
tree | b664d4e0d965be4a76356f5b669b8cf737522c0c /source4 | |
parent | edcbd24b6a98c25be083fa30971ea4ca04600871 (diff) | |
download | samba-7e949c9fb12483df11c7e926e2c5ed8e4b9b9d20.tar.gz samba-7e949c9fb12483df11c7e926e2c5ed8e4b9b9d20.tar.bz2 samba-7e949c9fb12483df11c7e926e2c5ed8e4b9b9d20.zip |
r17317: - add a composite_create() function that allocates and initialize
the composite_context structue, we should try to convert all code
to use this because there're a lot of places where the we have
bugs with this task...
- add a composite_continue_smb2() helper
We should try to hide the internals of the composite code from the users
to avoid errors (and I found a lot of them... and will fix then step by step)
metze
(This used to be commit a16180f20246844d05996d385fcb71893e08f589)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/libcli/composite/composite.c | 28 | ||||
-rw-r--r-- | source4/libcli/composite/composite.h | 1 |
2 files changed, 29 insertions, 0 deletions
diff --git a/source4/libcli/composite/composite.c b/source4/libcli/composite/composite.c index 9a745e3013..aea25f183e 100644 --- a/source4/libcli/composite/composite.c +++ b/source4/libcli/composite/composite.c @@ -24,12 +24,30 @@ #include "includes.h" #include "lib/events/events.h" #include "libcli/raw/libcliraw.h" +#include "libcli/smb2/smb2.h" #include "libcli/composite/composite.h" #include "lib/messaging/irpc.h" #include "librpc/rpc/dcerpc.h" #include "libcli/nbt/libnbt.h" /* + create a new composite_context structure + and initialize it +*/ +_PUBLIC_ struct composite_context *composite_create(TALLOC_CTX *mem_ctx, + struct event_context *ev) +{ + struct composite_context *c; + + c = talloc_zero(mem_ctx, struct composite_context); + if (!c) return NULL; + c->state = COMPOSITE_STATE_IN_PROGRESS; + c->event_ctx = ev; + + return c; +} + +/* block until a composite function has completed, then return the status */ _PUBLIC_ NTSTATUS composite_wait(struct composite_context *c) @@ -156,6 +174,16 @@ _PUBLIC_ void composite_continue_smb(struct composite_context *ctx, new_req->async.private = private_data; } +_PUBLIC_ void composite_continue_smb2(struct composite_context *ctx, + struct smb2_request *new_req, + void (*continuation)(struct smb2_request *), + void *private_data) +{ + if (composite_nomem(new_req, ctx)) return; + new_req->async.fn = continuation; + new_req->async.private = private_data; +} + _PUBLIC_ void composite_continue_nbt(struct composite_context *ctx, struct nbt_name_request *new_req, void (*continuation)(struct nbt_name_request *), diff --git a/source4/libcli/composite/composite.h b/source4/libcli/composite/composite.h index dc04f5a883..d8873684fc 100644 --- a/source4/libcli/composite/composite.h +++ b/source4/libcli/composite/composite.h @@ -63,6 +63,7 @@ struct composite_context { struct irpc_request; struct smbcli_request; +struct smb2_request; struct rpc_request; struct nbt_name_request; |