mirror of
https://github.com/samba-team/samba.git
synced 2025-02-04 17:47:26 +03:00
s3: In winbind, close parent/child sockets
This should further reduce fd load in winbind children
This commit is contained in:
parent
50883cfeb4
commit
0757688eb3
@ -404,7 +404,7 @@ static void winbind_msg_validate_cache(struct messaging_context *msg_ctx,
|
||||
|
||||
/* child */
|
||||
|
||||
if (!winbindd_reinit_after_fork(NULL)) {
|
||||
if (!winbindd_reinit_after_fork(NULL, NULL)) {
|
||||
_exit(0);
|
||||
}
|
||||
|
||||
|
@ -233,7 +233,7 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain)
|
||||
}
|
||||
}
|
||||
|
||||
if (!winbindd_reinit_after_fork(lfile)) {
|
||||
if (!winbindd_reinit_after_fork(NULL, lfile)) {
|
||||
messaging_send_buf(winbind_messaging_context(),
|
||||
pid_to_procid(parent_pid),
|
||||
MSG_WINBIND_FAILED_TO_GO_ONLINE,
|
||||
|
@ -1167,7 +1167,8 @@ static void child_msg_dump_event_list(struct messaging_context *msg,
|
||||
dump_event_list(winbind_event_context());
|
||||
}
|
||||
|
||||
bool winbindd_reinit_after_fork(const char *logfilename)
|
||||
bool winbindd_reinit_after_fork(const struct winbindd_child *myself,
|
||||
const char *logfilename)
|
||||
{
|
||||
struct winbindd_domain *domain;
|
||||
struct winbindd_child *cl;
|
||||
@ -1242,6 +1243,14 @@ bool winbindd_reinit_after_fork(const char *logfilename)
|
||||
* go through the parent.
|
||||
*/
|
||||
cl->pid = (pid_t)0;
|
||||
|
||||
/*
|
||||
* Close service sockets to all other children
|
||||
*/
|
||||
if ((cl != myself) && (cl->sock != -1)) {
|
||||
close(cl->sock);
|
||||
cl->sock = -1;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* This is a little tricky, children must not
|
||||
@ -1325,7 +1334,7 @@ static bool fork_domain_child(struct winbindd_child *child)
|
||||
state.sock = fdpair[0];
|
||||
close(fdpair[1]);
|
||||
|
||||
if (!winbindd_reinit_after_fork(child->logfilename)) {
|
||||
if (!winbindd_reinit_after_fork(child, child->logfilename)) {
|
||||
_exit(0);
|
||||
}
|
||||
|
||||
|
@ -291,7 +291,8 @@ void winbind_msg_ip_dropped_parent(struct messaging_context *msg_ctx,
|
||||
uint32_t msg_type,
|
||||
struct server_id server_id,
|
||||
DATA_BLOB *data);
|
||||
bool winbindd_reinit_after_fork(const char *logfilename);
|
||||
bool winbindd_reinit_after_fork(const struct winbindd_child *myself,
|
||||
const char *logfilename);
|
||||
struct winbindd_domain *wb_child_domain(void);
|
||||
|
||||
/* The following definitions come from winbindd/winbindd_group.c */
|
||||
|
Loading…
x
Reference in New Issue
Block a user