s4-event: added s4_event_context_set_default()
authorAndrew Tridgell <tridge@samba.org>
Wed, 6 Jan 2010 09:55:38 +0000 (20:55 +1100)
committerAndrew Tridgell <tridge@samba.org>
Fri, 8 Jan 2010 02:03:02 +0000 (13:03 +1100)
we're still not weaned off event_context_find()

source4/lib/events/events.h
source4/lib/events/tevent_s4.c
source4/smbd/server.c

index 1b2dbde32b143eaa9025406f8d4437184ad6ecd9..5fdb96794e53b201edf999c69fa47fe0f3d57780 100644 (file)
@@ -4,4 +4,5 @@
 #include <../lib/tevent/tevent.h>
 struct tevent_context *s4_event_context_init(TALLOC_CTX *mem_ctx);
 struct tevent_context *event_context_find(TALLOC_CTX *mem_ctx) _DEPRECATED_;
+void s4_event_context_set_default(struct tevent_context *ev);
 #endif /* __LIB_EVENTS_H__ */
index 1898269c2ca759d37ec3f181b822edb0a83850ed..838f20debeb10a7ae721e03fb3cf6a52192437cc 100644 (file)
@@ -71,6 +71,16 @@ struct tevent_context *s4_event_context_init(TALLOC_CTX *mem_ctx)
        return ev;
 }
 
+static struct tevent_context *default_tevent_context;
+
+/* set a default event context that will be used for
+ * event_context_find() if a parent event context is not found
+ */
+void s4_event_context_set_default(struct tevent_context *ev)
+{
+       default_tevent_context = ev;
+}
+
 /*
   find an event context that is a parent of the given memory context,
   or create a new event context as a child of the given context if
@@ -83,7 +93,10 @@ struct tevent_context *s4_event_context_init(TALLOC_CTX *mem_ctx)
 struct tevent_context *event_context_find(TALLOC_CTX *mem_ctx)
 {
        struct tevent_context *ev = talloc_find_parent_bytype(mem_ctx, struct tevent_context);
-       if (ev == NULL) {               
+       if (ev == NULL) {
+               ev = default_tevent_context;
+       }
+       if (ev == NULL) {
                ev = tevent_context_init(mem_ctx);
        }
        return ev;
index e73cdfd659d19b61711ea143165b05794f9a883a..99e9c68a87de4b8b9d7c51bcf29b3d9550cb6811 100644 (file)
@@ -376,6 +376,9 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
           should hang off that */
        event_ctx = s4_event_context_init(talloc_autofree_context());
 
+       /* setup this as the default context */
+       s4_event_context_set_default(event_ctx);
+
        if (event_ctx == NULL) {
                DEBUG(0,("Initializing event context failed\n"));
                return 1;