diff options
-rw-r--r-- | source3/include/proto.h | 1 | ||||
-rw-r--r-- | source3/smbd/notify_internal.c | 27 | ||||
-rw-r--r-- | source3/smbd/server.c | 4 |
3 files changed, 32 insertions, 0 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index e8f99859b8..dca58cc733 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6545,6 +6545,7 @@ struct notify_context *notify_init(TALLOC_CTX *mem_ctx, struct server_id server, struct messaging_context *messaging_ctx, struct event_context *ev, connection_struct *conn); +bool notify_internal_parent_init(void); NTSTATUS notify_add(struct notify_context *notify, struct notify_entry *e0, void (*callback)(void *, const struct notify_event *), void *private_data); diff --git a/source3/smbd/notify_internal.c b/source3/smbd/notify_internal.c index 0467e672c1..0e38da6a8c 100644 --- a/source3/smbd/notify_internal.c +++ b/source3/smbd/notify_internal.c @@ -128,6 +128,33 @@ struct notify_context *notify_init(TALLOC_CTX *mem_ctx, struct server_id server, return notify; } +bool notify_internal_parent_init(void) +{ + struct tdb_wrap *db1, *db2; + + if (lp_clustering()) { + return true; + } + + db1 = tdb_wrap_open(talloc_autofree_context(), lock_path("notify.tdb"), + 0, TDB_SEQNUM|TDB_CLEAR_IF_FIRST, + O_RDWR|O_CREAT, 0644); + if (db1 == NULL) { + DEBUG(1, ("could not open notify.tdb: %s\n", strerror(errno))); + return false; + } + db2 = tdb_wrap_open(talloc_autofree_context(), + lock_path("notify_onelevel.tdb"), + 0, TDB_CLEAR_IF_FIRST, O_RDWR|O_CREAT, 0644); + if (db2 == NULL) { + DEBUG(1, ("could not open notify_onelevel.tdb: %s\n", + strerror(errno))); + TALLOC_FREE(db1); + return false; + } + return true; +} + /* lock and fetch the record */ diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 0a6d66c180..145dd5f5d5 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -1300,6 +1300,10 @@ extern void build_options(bool screen); exit(1); } + if (!notify_internal_parent_init()) { + exit(1); + } + namecache_enable(); if (!W_ERROR_IS_OK(registry_init_full())) |