summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/lib/ldb_wrap.c9
-rw-r--r--source4/smbd/process_prefork.c5
-rw-r--r--source4/smbd/process_standard.c9
3 files changed, 9 insertions, 14 deletions
diff --git a/source4/lib/ldb_wrap.c b/source4/lib/ldb_wrap.c
index 1166acd3a22..ecd7bf45543 100644
--- a/source4/lib/ldb_wrap.c
+++ b/source4/lib/ldb_wrap.c
@@ -35,6 +35,7 @@
#include "dsdb/samdb/samdb.h"
#include "param/param.h"
#include "dlinklist.h"
+#include "../tdb/include/tdb.h"
/*
this is used to catch debug messages from ldb
@@ -263,7 +264,13 @@ void ldb_wrap_fork_hook(void)
struct ldb_wrap *w;
for (w=ldb_wrap_list; w; w=w->next) {
- ldb_transaction_cancel_noerr(w->ldb);
+ if (ldb_transaction_cancel_noerr(w->ldb) != LDB_SUCCESS) {
+ smb_panic("Failed to cancel child transactions\n");
+ }
}
+
+ if (tdb_reopen_all(1) == -1) {
+ smb_panic("tdb_reopen_all failed\n");
+ }
}
diff --git a/source4/smbd/process_prefork.c b/source4/smbd/process_prefork.c
index db5633b9f26..f890a528d52 100644
--- a/source4/smbd/process_prefork.c
+++ b/source4/smbd/process_prefork.c
@@ -25,7 +25,6 @@
#include "includes.h"
#include "lib/events/events.h"
-#include "../tdb/include/tdb.h"
#include "lib/socket/socket.h"
#include "smbd/process_model.h"
#include "param/secrets.h"
@@ -57,10 +56,6 @@ static void prefork_model_init(struct tevent_context *ev)
static void prefork_reload_after_fork(void)
{
- /* tdb needs special fork handling */
- if (tdb_reopen_all(1) == -1) {
- DEBUG(0,("prefork_reload_after_fork: tdb_reopen_all failed.\n"));
- }
ldb_wrap_fork_hook();
/* Ensure that the forked children do not expose identical random streams */
diff --git a/source4/smbd/process_standard.c b/source4/smbd/process_standard.c
index 6e7b714a633..ab5ad5760c6 100644
--- a/source4/smbd/process_standard.c
+++ b/source4/smbd/process_standard.c
@@ -23,7 +23,6 @@
#include "includes.h"
#include "lib/events/events.h"
-#include "../tdb/include/tdb.h"
#include "smbd/process_model.h"
#include "system/filesys.h"
#include "cluster/cluster.h"
@@ -125,9 +124,6 @@ static void standard_accept_connection(struct tevent_context *ev,
socket_dup(sock2);
/* tdb needs special fork handling */
- if (tdb_reopen_all(1) == -1) {
- DEBUG(0,("standard_accept_connection: tdb_reopen_all failed.\n"));
- }
ldb_wrap_fork_hook();
tevent_add_fd(ev2, ev2, child_pipe[0], TEVENT_FD_READ,
@@ -192,10 +188,7 @@ static void standard_new_task(struct tevent_context *ev,
is not associated with this new connection */
talloc_free(ev);
- /* tdb needs special fork handling */
- if (tdb_reopen_all(1) == -1) {
- DEBUG(0,("standard_accept_connection: tdb_reopen_all failed.\n"));
- }
+ /* ldb/tdb need special fork handling */
ldb_wrap_fork_hook();
tevent_add_fd(ev2, ev2, child_pipe[0], TEVENT_FD_READ,