mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
Don't send message to any other child in child process.
Signed-off-by: Bo Yang <boyang@novell.com>
This commit is contained in:
parent
8c983af56d
commit
54325f7ed5
@ -1202,7 +1202,29 @@ bool winbindd_reinit_after_fork(const char *logfilename)
|
||||
}
|
||||
TALLOC_FREE(cl->lockout_policy_event);
|
||||
TALLOC_FREE(cl->machine_password_change_event);
|
||||
|
||||
/* Children should never be able to send
|
||||
* each other messages, all meesages must
|
||||
* go through the parent.
|
||||
*/
|
||||
cl->pid = (pid_t)0;
|
||||
}
|
||||
/*
|
||||
* This is a little tricky, we don't want child
|
||||
* to send MSG_WINBIND_ONLINE to idmap_child().
|
||||
* If we are in the child of trusted domain or
|
||||
* in the process created by fork_child_dc_connect().
|
||||
* And the trusted domain cannot go online,
|
||||
* fork_child_dc_connection() sends MSG_WINBIND_ONLINE
|
||||
* periodically to idmap_child().
|
||||
* look, fork_child_dc_connect() ---> getdcs() --->
|
||||
* get_dc_name_via_netlogon() ---> cm_connect_netlogon()
|
||||
* ---> init_dc_connection() ---> cm_open_connection --->
|
||||
* set_domain_online(), here send MSG_WINBIND_ONLINE to
|
||||
* idmap_child().
|
||||
*/
|
||||
cl = idmap_child();
|
||||
cl->pid = (pid_t)0;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1296,6 +1318,14 @@ static bool fork_domain_child(struct winbindd_child *child)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* We are in idmap child, make sure that we set the
|
||||
* check_online_event to bring primary domain online.
|
||||
*/
|
||||
if (child == idmap_child()) {
|
||||
set_domain_online_request(primary_domain);
|
||||
}
|
||||
|
||||
/* We might be in the idmap child...*/
|
||||
if (child->domain && !(child->domain->internal) &&
|
||||
|
Loading…
x
Reference in New Issue
Block a user