From 42ececdfae15a34205638cc6e3ec53d6f3ac2148 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 15 Oct 2005 19:18:05 +0000 Subject: r11093: Implement wb_queue_domain_send: If the domain is not yet initialized, do that first. And if a request is being processed, queue it. This correctly survived 3 endless loops with wbinfo's doing different things while starting up smbd. The number of indirections starts to become a bit scary, but what can you do without a decent programming language that provides closures :-) One thing that we might consider is to auto-generate async rpc requests that return composite_context structs instead of rpc_requests. Otherwise I'd have to write a lot of wrappers like composite_netr_LogonSamLogon_send. The alternative would be to write two versions of wb_queue_domain_send which I would like to avoid. This is cluttered enough already. Volker (This used to be commit 66c1b674f9870de73cce0e611909caf9eff34baa) --- source4/winbind/wb_connect_lsa.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'source4/winbind/wb_connect_lsa.c') diff --git a/source4/winbind/wb_connect_lsa.c b/source4/winbind/wb_connect_lsa.c index ef7b525c2a..82fe3b2e74 100644 --- a/source4/winbind/wb_connect_lsa.c +++ b/source4/winbind/wb_connect_lsa.c @@ -23,21 +23,9 @@ #include "includes.h" #include "libcli/composite/composite.h" -#include "libcli/smb_composite/smb_composite.h" -#include "winbind/wb_async_helpers.h" -#include "winbind/wb_server.h" -#include "smbd/service_stream.h" - -#include "librpc/gen_ndr/nbt.h" -#include "librpc/gen_ndr/samr.h" -#include "lib/messaging/irpc.h" -#include "librpc/gen_ndr/irpc.h" -#include "librpc/gen_ndr/ndr_irpc.h" + #include "libcli/raw/libcliraw.h" -#include "librpc/gen_ndr/ndr_netlogon.h" #include "librpc/gen_ndr/ndr_lsa.h" -#include "libcli/auth/credentials.h" - /* Helper to initialize LSA with a specific auth methods. Verify by opening * the LSA policy. */ @@ -67,6 +55,7 @@ static struct composite_context *wb_init_lsa_send(struct smbcli_tree *tree, result = talloc(NULL, struct composite_context); if (result == NULL) goto failed; result->state = COMPOSITE_STATE_IN_PROGRESS; + result->async.fn = NULL; result->event_ctx = tree->session->transport->socket->event.ctx; state = talloc(result, struct init_lsa_state); @@ -205,6 +194,7 @@ struct composite_context *wb_connect_lsa_send(struct smbcli_tree *tree, result = talloc(NULL, struct composite_context); if (result == NULL) goto failed; result->state = COMPOSITE_STATE_IN_PROGRESS; + result->async.fn = NULL; result->event_ctx = tree->session->transport->socket->event.ctx; state = talloc(result, struct connect_lsa_state); -- cgit