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

r24778: Make sure krb5 locator requests go to a separate locator winbind child.

Guenther
(This used to be commit fb9228b8d1)
This commit is contained in:
Günther Deschner 2007-08-29 12:43:23 +00:00 committed by Gerald (Jerry) Carter
parent 4429a01c83
commit 53d41f3b1b
4 changed files with 31 additions and 5 deletions

View File

@ -1184,6 +1184,7 @@ int main(int argc, char **argv, char **envp)
}
init_idmap_child();
init_locator_child();
smb_nscd_flush_user_cache();
smb_nscd_flush_group_cache();

View File

@ -579,9 +579,9 @@ void winbind_msg_offline(struct messaging_context *msg_ctx,
}
for (child = children; child != NULL; child = child->next) {
/* Don't send message to idmap child. We've already
/* Don't send message to internal childs. We've already
done so above. */
if (!child->domain || (child == idmap_child())) {
if (!child->domain || winbindd_internal_child(child)) {
continue;
}
@ -655,8 +655,8 @@ void winbind_msg_online(struct messaging_context *msg_ctx,
}
for (child = children; child != NULL; child = child->next) {
/* Don't send message to idmap child. */
if (!child->domain || (child == idmap_child())) {
/* Don't send message to internal childs. */
if (!child->domain || winbindd_internal_child(child)) {
continue;
}

View File

@ -270,6 +270,18 @@ enum winbindd_result winbindd_dual_getdcname(struct winbindd_domain *domain,
return WINBINDD_OK;
}
static struct winbindd_child static_locator_child;
void init_locator_child(void)
{
setup_domain_child(NULL, &static_locator_child, "locator");
}
struct winbindd_child *locator_child(void)
{
return &static_locator_child;
}
void winbindd_dsgetdcname(struct winbindd_cli_state *state)
{
state->request.domain_name
@ -278,7 +290,7 @@ void winbindd_dsgetdcname(struct winbindd_cli_state *state)
DEBUG(3, ("[%5lu]: DsGetDcName for %s\n", (unsigned long)state->pid,
state->request.domain_name));
sendto_domain(state, find_our_domain());
sendto_child(state, locator_child());
}
enum winbindd_result winbindd_dual_dsgetdcname(struct winbindd_domain *domain,
@ -603,3 +615,4 @@ void winbindd_priv_pipe_dir(struct winbindd_cli_state *state)
request_ok(state);
}

View File

@ -1353,3 +1353,15 @@ BOOL winbindd_can_contact_domain( struct winbindd_domain *domain )
return True;
}
/*********************************************************************
********************************************************************/
BOOL winbindd_internal_child(struct winbindd_child *child)
{
if (child == idmap_child() || child == locator_child()) {
return True;
}
return False;
}