summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/globals.c2
-rw-r--r--source3/smbd/globals.h3
-rw-r--r--source3/smbd/server.c17
3 files changed, 12 insertions, 10 deletions
diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c
index 82de70a388..274f017b08 100644
--- a/source3/smbd/globals.c
+++ b/source3/smbd/globals.c
@@ -98,7 +98,7 @@ int32_t exclusive_oplocks_open = 0;
int32_t level_II_oplocks_open = 0;
struct kernel_oplocks *koplocks = NULL;
-int am_parent = 1;
+struct smbd_parent_context *am_parent = NULL;
struct memcache *smbd_memcache_ctx = NULL;
bool exit_firsttime = true;
struct child_pid *children = 0;
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index 559f8fb24e..020e1bcdde 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -113,7 +113,8 @@ extern int32_t exclusive_oplocks_open;
extern int32_t level_II_oplocks_open;
extern struct kernel_oplocks *koplocks;
-extern int am_parent;
+struct smbd_parent_context;
+extern struct smbd_parent_context *am_parent;
extern struct memcache *smbd_memcache_ctx;
extern bool exit_firsttime;
struct child_pid;
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 7cd1b83326..779bbba1fa 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -416,7 +416,14 @@ static void smbd_accept_connection(struct tevent_context *ev,
NTSTATUS status = NT_STATUS_OK;
/* Child code ... */
- am_parent = 0;
+ am_parent = NULL;
+
+ /*
+ * Can't use TALLOC_FREE here. Nulling out the argument to it
+ * would overwrite memory we've just freed.
+ */
+ talloc_free(s->parent);
+ s = NULL;
set_my_unique_id(unique_id);
@@ -430,13 +437,6 @@ static void smbd_accept_connection(struct tevent_context *ev,
close_low_fds(False); /* Don't close stderr */
}
- /*
- * Can't use TALLOC_FREE here. Nulling out the argument to it
- * would overwrite memory we've just freed.
- */
- talloc_free(s->parent);
- s = NULL;
-
status = reinit_after_fork(msg_ctx,
ev,
true);
@@ -1146,6 +1146,7 @@ extern void build_options(bool screen);
parent->interactive = interactive;
parent->ev_ctx = ev_ctx;
parent->msg_ctx = msg_ctx;
+ am_parent = parent;
se = tevent_add_signal(parent->ev_ctx,
parent,