1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

r20270: Even with the dual daemon mode the parent winbindd

still needs to contact the DC's for non async requests
like enumerate users/groups etc. Now that online
DC detection is tied to async events we must enable
the processing of events in the main loop of winbindd.
Finally got rid of the last hard coded domain->initialized = 1
code in init_child_recv() - now all domain->initialized = True
gets done only in the connection manager code when either
we're online and have spoken to the DC or are offline and
we know we can't talk to the DC.
Jeremy.
(This used to be commit b3c98057fb)
This commit is contained in:
Jeremy Allison 2006-12-20 04:50:46 +00:00 committed by Gerald (Jerry) Carter
parent e59e787b48
commit 5d3456b22e
2 changed files with 26 additions and 3 deletions

View File

@ -708,7 +708,7 @@ static void process_loop(void)
struct fd_event *ev;
fd_set r_fds, w_fds;
int maxfd, listen_sock, listen_priv_sock, selret;
struct timeval timeout;
struct timeval timeout, ev_timeout;
/* We'll be doing this a lot */
@ -716,8 +716,10 @@ static void process_loop(void)
message_dispatch();
run_events();
/* refresh the trusted domain cache */
rescan_trusted_domains();
/* Free up temporary memory */
@ -745,6 +747,11 @@ static void process_loop(void)
timeout.tv_sec = WINBINDD_ESTABLISH_LOOP;
timeout.tv_usec = 0;
/* Check for any event timeouts. */
if (get_timed_events_timeout(&ev_timeout)) {
timeout = timeval_min(&timeout, &ev_timeout);
}
/* Set up client readers and writers */
state = winbindd_client_list();

View File

@ -285,6 +285,15 @@ static void trustdom_recv(void *private_data, BOOL success)
&cache_methods,
&sid);
setup_domain_child(domain, &domain->child, NULL);
if (!domain->internal) {
/* Even in the parent winbindd we'll need to
talk to the DC, so try and see if we can
contact it. Theoretically this isn't neccessary
as the init_dc_connection() in init_child_recv()
will do this, but we can start detecting the DC
early here. */
set_domain_online_request(domain);
}
}
p=q;
if (p != NULL)
@ -443,7 +452,7 @@ static void init_child_recv(void *private_data, BOOL success)
state->domain->sequence_number =
state->response->data.domain_info.sequence_number;
state->domain->initialized = 1;
init_dc_connection(state->domain);
if (state->continuation != NULL)
state->continuation(state->private_data, True);
@ -515,6 +524,13 @@ BOOL init_domain_list(void)
&cache_methods, &our_sid);
domain->primary = True;
setup_domain_child(domain, &domain->child, NULL);
/* Even in the parent winbindd we'll need to
talk to the DC, so try and see if we can
contact it. Theoretically this isn't neccessary
as the init_dc_connection() in init_child_recv()
will do this, but we can start detecting the DC
early here. */
set_domain_online_request(domain);
}
/* Local SAM */