Revert "TODO- s3:winbindd: use tevent_loop_wait() in the main loop"
authorStefan Metzmacher <metze@samba.org>
Thu, 17 May 2018 07:33:14 +0000 (09:33 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 17 May 2018 07:52:31 +0000 (09:52 +0200)
This reverts commit 0a1fc22509040afee29a70e23b164634cd815922.

source3/winbindd/winbindd.c
source3/winbindd/winbindd_dual.c

index 40709acbcc606afb3e90c2f4d83b8dae1bd19961..76d644b1ba60302ab6acf1820f729b71e73d105b 100644 (file)
@@ -1479,34 +1479,6 @@ static void winbindd_addr_changed(struct tevent_req *req)
        tevent_req_set_callback(req, winbindd_addr_changed, state);
 }
 
-
-struct winbindd_tevent_trace_state {
-       TALLOC_CTX *frame;
-};
-
-static void winbindd_tevent_trace_callback(enum tevent_trace_point point,
-                                          void *private_data)
-{
-       struct winbindd_tevent_trace_state *state =
-               talloc_get_type_abort(private_data,
-                                     struct winbindd_tevent_trace_state);
-
-       switch (point) {
-       case TEVENT_TRACE_BEFORE_WAIT:
-       case TEVENT_TRACE_AFTER_WAIT:
-               break;
-       case TEVENT_TRACE_BEFORE_LOOP_ONCE:
-               TALLOC_FREE(state->frame);
-               state->frame = talloc_stackframe();
-               errno = 0;
-               break;
-       case TEVENT_TRACE_AFTER_LOOP_ONCE:
-               TALLOC_FREE(state->frame);
-               break;
-       }
-}
-
-
 /* Main function */
 
 int main(int argc, const char **argv)
@@ -1537,9 +1509,6 @@ int main(int argc, const char **argv)
        TALLOC_CTX *frame;
        NTSTATUS status;
        bool ok;
-       int ret = 0;
-       struct tevent_context *ev_ctx = NULL;
-       struct winbindd_tevent_trace_state *trace_state = NULL;
 
        setproctitle_init(argc, discard_const(argv), environ);
 
@@ -1730,7 +1699,7 @@ int main(int argc, const char **argv)
        if (!init_names())
                exit(1);
 
-       load_interfaces();
+       load_interfaces();
 
        if (!secrets_init()) {
 
@@ -1829,34 +1798,17 @@ int main(int argc, const char **argv)
        gpupdate_init();
 
        /* Loop waiting for requests */
+       while (1) {
+               frame = talloc_stackframe();
 
-       ev_ctx = server_event_context();
-       if (ev_ctx == NULL) {
-               DEBUG(0, ("%s: winbind_event_context() failed\n",
-                         __location__));
-               exit(1);
-       }
-
-       trace_state = talloc_zero(ev_ctx, struct winbindd_tevent_trace_state);
-       if (trace_state == NULL) {
-               DEBUG(0, ("talloc_zero(winbindd_tevent_trace_state).\n"));
-               exit(1);
-       }
-
-       trace_state->frame = frame;
-       frame = NULL;
-
-       tevent_set_trace_callback(ev_ctx, winbindd_tevent_trace_callback,
-                                 trace_state);
+               if (tevent_loop_once(server_event_context()) == -1) {
+                       DEBUG(1, ("tevent_loop_once() failed: %s\n",
+                                 strerror(errno)));
+                       return 1;
+               }
 
-       ret = tevent_loop_wait(ev_ctx);
-       if (ret != 0) {
-               DEBUG(0, ("tevent_loop_wait failed: %d, %s, exiting\n",
-                         ret, strerror(errno)));
-               exit(1);
+               TALLOC_FREE(frame);
        }
 
-       TALLOC_FREE(trace_state->frame);
-
        return 0;
 }
index 3874c1f68639dfe39d9ed1cd3636426cf69273a5..cff2c974deeee5c35a512b6d44afc4e6c589b65d 100644 (file)
@@ -1812,6 +1812,7 @@ static bool fork_domain_child(struct winbindd_child *child)
        while (1) {
 
                int ret;
+               TALLOC_CTX *frame = talloc_stackframe();
 
                ret = tevent_loop_once(server_event_context());
                if (ret != 0) {
@@ -1827,6 +1828,8 @@ static bool fork_domain_child(struct winbindd_child *child)
                                child->domain->name ));
                        child->domain->startup = False;
                }
+
+               TALLOC_FREE(frame);
        }
 }