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)
TALLOC_CTX *frame;
NTSTATUS status;
bool ok;
- int ret = 0;
- struct tevent_context *ev_ctx = NULL;
- struct winbindd_tevent_trace_state *trace_state = NULL;
/*
* Do this before any other talloc operation
if (!init_names())
exit(1);
- load_interfaces();
+ load_interfaces();
if (!secrets_init()) {
daemon_ready("winbindd");
}
+ TALLOC_FREE(frame);
/* Loop waiting for requests */
+ while (1) {
+ frame = talloc_stackframe();
- ev_ctx = winbind_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(winbind_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;
}