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:
parent
4429a01c83
commit
53d41f3b1b
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user