summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/server.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index aa3da1f743..851b4608a7 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -57,6 +57,8 @@ struct smbd_parent_context {
/* the list of current child processes */
struct smbd_child_pid *children;
size_t num_children;
+ /* pipe for detecting death of parent process in child: */
+ int child_pipe[2];
struct timed_event *cleanup_te;
};
@@ -1231,6 +1233,17 @@ extern void build_options(bool screen);
exit(1);
}
+ /*
+ * Do not initialize the parent-child-pipe before becoming
+ * a daemon: this is used to detect a died parent in the child
+ * process.
+ */
+ status = init_before_fork();
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(0, ("init_before_fork failed: %s\n", nt_errstr(status)));
+ exit(1);
+ }
+
smbd_server_conn->msg_ctx = msg_ctx;
parent = talloc_zero(ev_ctx, struct smbd_parent_context);