From cd794e79f999b3b7b639c4fe89ea1af23ed362f6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 7 Apr 2006 11:25:21 +0000 Subject: r14959: allow change notify to be disabled completely using notify:enable=False (This used to be commit 2a8f093105f3047a3697f29aadcc9c48c6ac88e1) --- source4/ntvfs/common/notify.c | 19 +++++++++++++++++++ source4/ntvfs/posix/vfs_posix.c | 4 +--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/source4/ntvfs/common/notify.c b/source4/ntvfs/common/notify.c index 0c264de88f..452b8188f0 100644 --- a/source4/ntvfs/common/notify.c +++ b/source4/ntvfs/common/notify.c @@ -83,6 +83,10 @@ struct notify_context *notify_init(TALLOC_CTX *mem_ctx, uint32_t server, char *path; struct notify_context *notify; + if (lp_parm_bool(snum, "notify", "enable", True) != True) { + return NULL; + } + notify = talloc(mem_ctx, struct notify_context); if (notify == NULL) { return NULL; @@ -339,6 +343,11 @@ NTSTATUS notify_add(struct notify_context *notify, struct notify_entry *e0, size_t len; int depth; + /* see if change notify is enabled at all */ + if (notify == NULL) { + return NT_STATUS_NOT_IMPLEMENTED; + } + status = notify_lock(notify); NT_STATUS_NOT_OK_RETURN(status); @@ -410,6 +419,11 @@ NTSTATUS notify_remove(struct notify_context *notify, void *private) int i, depth; struct notify_depth *d; + /* see if change notify is enabled at all */ + if (notify == NULL) { + return NT_STATUS_NOT_IMPLEMENTED; + } + for (listel=notify->list;listel;listel=listel->next) { if (listel->private == private) { DLIST_REMOVE(notify->list, listel); @@ -552,6 +566,11 @@ void notify_trigger(struct notify_context *notify, int depth; const char *p, *next_p; + /* see if change notify is enabled at all */ + if (notify == NULL) { + return; + } + status = notify_load(notify); if (!NT_STATUS_IS_OK(status)) { return; diff --git a/source4/ntvfs/posix/vfs_posix.c b/source4/ntvfs/posix/vfs_posix.c index 3e141219f4..dd8c3fe81f 100644 --- a/source4/ntvfs/posix/vfs_posix.c +++ b/source4/ntvfs/posix/vfs_posix.c @@ -185,14 +185,12 @@ static NTSTATUS pvfs_connect(struct ntvfs_module_context *ntvfs, return NT_STATUS_INTERNAL_DB_CORRUPTION; } + /* allow this to be NULL - we just disable change notify */ pvfs->notify_context = notify_init(pvfs, pvfs->ntvfs->ctx->server_id, pvfs->ntvfs->ctx->msg_ctx, event_context_find(pvfs), pvfs->ntvfs->ctx->config.snum); - if (pvfs->notify_context == NULL) { - return NT_STATUS_INTERNAL_DB_CORRUPTION; - } pvfs->sidmap = sidmap_open(pvfs); if (pvfs->sidmap == NULL) { -- cgit