summaryrefslogtreecommitdiff
path: root/source4/libcli/composite/composite.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-09-13 12:46:03 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:38:08 -0500
commit45f760973d9b5c0663608e779eb337c0648e9313 (patch)
tree8021224e493f613ec4107f531519a44059cff048 /source4/libcli/composite/composite.c
parent6bfea6335620083f3fd8b47a297c7c0140fb33c1 (diff)
downloadsamba-45f760973d9b5c0663608e779eb337c0648e9313.tar.gz
samba-45f760973d9b5c0663608e779eb337c0648e9313.tar.bz2
samba-45f760973d9b5c0663608e779eb337c0648e9313.zip
r10200: added a composite_trigger_done() call that allows a composite function
to cause an event to happen immediately. This allows metzes patch for recognising IPs in resolve_name() to work, and also allows us to remove some of the other code where we currently do specific checks for is_ipaddress(). (This used to be commit 9cc000d868e1257ef6429f6f6f1f9d3c28ca330f)
Diffstat (limited to 'source4/libcli/composite/composite.c')
-rw-r--r--source4/libcli/composite/composite.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/source4/libcli/composite/composite.c b/source4/libcli/composite/composite.c
index 2b8ddea897..f04309bbfb 100644
--- a/source4/libcli/composite/composite.c
+++ b/source4/libcli/composite/composite.c
@@ -44,3 +44,27 @@ NTSTATUS composite_wait(struct composite_context *c)
}
+/*
+ callback from composite_trigger_done()
+*/
+static void composite_trigger(struct event_context *ev, struct timed_event *te,
+ struct timeval t, void *ptr)
+{
+ struct composite_context *c = talloc_get_type(ptr, struct composite_context);
+ c->state = SMBCLI_REQUEST_DONE;
+ if (c->async.fn) {
+ c->async.fn(c);
+ }
+}
+
+
+/*
+ trigger an immediate 'done' event on a composite context
+ this is used when the composite code works out that the call
+ can be completed without waiting for any external event
+*/
+void composite_trigger_done(struct composite_context *c)
+{
+ /* a zero timeout means immediate */
+ event_add_timed(c->event_ctx, c, timeval_zero(), composite_trigger, c);
+}