1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-04 17:47:26 +03:00

r17319: make better usage of the composite api

metze
(This used to be commit 8f9e201b9a797c0772672efab0f8e6a7a6312eb0)
This commit is contained in:
Stefan Metzmacher 2006-07-30 17:31:12 +00:00 committed by Gerald (Jerry) Carter
parent 7c50eec25e
commit 3437c2d92c

View File

@ -66,44 +66,36 @@ struct composite_context *finddcs_send(TALLOC_CTX *mem_ctx,
struct event_context *event_ctx,
struct messaging_context *msg_ctx)
{
struct composite_context *result, *ctx;
struct composite_context *c, *creq;
struct finddcs_state *state;
struct nbt_name name;
result = talloc_zero(mem_ctx, struct composite_context);
if (result == NULL) goto failed;
result->state = COMPOSITE_STATE_IN_PROGRESS;
result->async.fn = NULL;
result->event_ctx = event_ctx;
c = composite_create(mem_ctx, event_ctx);
if (c == NULL) return NULL;
state = talloc(result, struct finddcs_state);
if (state == NULL) goto failed;
state->ctx = result;
result->private_data = state;
state = talloc(c, struct finddcs_state);
if (composite_nomem(state, c)) return c;
c->private_data = state;
state->ctx = c;
state->domain_name = talloc_strdup(state, domain_name);
if (state->domain_name == NULL) goto failed;
state->domain_sid = domain_sid;
if (domain_sid != NULL) {
if (talloc_reference(state, domain_sid) == NULL) {
goto failed;
}
if (composite_nomem(state->domain_name, c)) return c;
if (domain_sid) {
state->domain_sid = talloc_reference(state, domain_sid);
if (composite_nomem(state->domain_sid, c)) return c;
} else {
state->domain_sid = NULL;
}
state->msg_ctx = msg_ctx;
make_nbt_name(&name, state->domain_name, name_type);
ctx = resolve_name_send(&name, result->event_ctx,
methods);
if (ctx == NULL) goto failed;
ctx->async.fn = finddcs_name_resolved;
ctx->async.private_data = state;
return result;
failed:
talloc_free(result);
return NULL;
creq = resolve_name_send(&name, event_ctx,
methods);
composite_continue(c, creq, finddcs_name_resolved, state);
return c;
}
/* Having got an name query answer, fire off a GetDC request, so we