diff options
author | Stefan Metzmacher <metze@samba.org> | 2009-11-19 09:34:05 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2009-11-20 09:45:36 +0100 |
commit | 3b9f19ed919fef2e88b2f92ae541e07bc7379cd1 (patch) | |
tree | 5f7d072e56ab7ee22549051cffcc64a4a3694679 /lib/tdb/common/open.c | |
parent | 436b55db1ff238ec467b07a74b088f6fcfaf927c (diff) | |
download | samba-3b9f19ed919fef2e88b2f92ae541e07bc7379cd1.tar.gz samba-3b9f19ed919fef2e88b2f92ae541e07bc7379cd1.tar.bz2 samba-3b9f19ed919fef2e88b2f92ae541e07bc7379cd1.zip |
tdb: add TDB_DISALLOW_NESTING and make TDB_ALLOW_NESTING the default behavior
We need to keep TDB_ALLOW_NESTING as default behavior,
so that existing code continues to work.
However we may change the default together with a major version
number change in future.
metze
Diffstat (limited to 'lib/tdb/common/open.c')
-rw-r--r-- | lib/tdb/common/open.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/tdb/common/open.c b/lib/tdb/common/open.c index 4ea4499dc1..4d4f95a3da 100644 --- a/lib/tdb/common/open.c +++ b/lib/tdb/common/open.c @@ -202,6 +202,23 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags, tdb->flags &= ~TDB_CLEAR_IF_FIRST; } + if ((tdb->flags & TDB_ALLOW_NESTING) && + (tdb->flags & TDB_DISALLOW_NESTING)) { + tdb->ecode = TDB_ERR_NESTING; + TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_open_ex: " + "allow_nesting and disallow_nesting are not allowed together!")); + errno = EINVAL; + goto fail; + } + + /* + * TDB_ALLOW_NESTING is the default behavior. + * Note: this may change in future versions! + */ + if (!(tdb->flags & TDB_DISALLOW_NESTING)) { + tdb->flags |= TDB_ALLOW_NESTING; + } + /* internal databases don't mmap or lock, and start off cleared */ if (tdb->flags & TDB_INTERNAL) { tdb->flags |= (TDB_NOLOCK | TDB_NOMMAP); |