diff options
author | Andrew Tridgell <tridge@samba.org> | 2010-11-04 20:13:17 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-11-04 20:35:44 +1100 |
commit | 1ab7bd1bfbfe5a27c91315d98c4e4949608d83e9 (patch) | |
tree | f6079ff221bfc96ea2e6ae51baf77cf58e379d5e /source4/lib/ldb/common | |
parent | 6a22d8938c36de8e8a6e99eadca896bdb9802b1d (diff) | |
download | samba-1ab7bd1bfbfe5a27c91315d98c4e4949608d83e9.tar.gz |
s4-ldb: don't load modules from the same directory twice
this prevents samba dying if you do a 'make install' while it is
running. Otherwise the make install changes the inode numbers of the
modules in the modules directory, causing them to reload, which causes
multiple modules of the same name to try and load
Diffstat (limited to 'source4/lib/ldb/common')
-rw-r--r-- | source4/lib/ldb/common/ldb_modules.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/source4/lib/ldb/common/ldb_modules.c b/source4/lib/ldb/common/ldb_modules.c index 14572987987..96e3fed7eba 100644 --- a/source4/lib/ldb/common/ldb_modules.c +++ b/source4/lib/ldb/common/ldb_modules.c @@ -844,7 +844,7 @@ static int ldb_modules_load_dir(const char *modules_dir, const char *version); from the first ldb_init() is just a convenient way to ensure it is called early enough. */ -static int ldb_modules_load_one(const char *path, const char *version) +static int ldb_modules_load_path(const char *path, const char *version) { void *handle; int (*init_fn)(const char *); @@ -969,7 +969,7 @@ static int ldb_modules_load_dir(const char *modules_dir, const char *version) TYPESAFE_QSORT(modlist, num_modules, qsort_string); for (i=0; i<num_modules; i++) { - int ret = ldb_modules_load_one(modlist[i], version); + int ret = ldb_modules_load_path(modlist[i], version); if (ret != LDB_SUCCESS) { fprintf(stderr, "ldb: failed to initialise module %s : %s\n", modlist[i], ldb_strerror(ret)); @@ -988,7 +988,7 @@ static int ldb_modules_load_dir(const char *modules_dir, const char *version) */ void ldb_set_modules_dir(struct ldb_context *ldb, const char *path) { - int ret = ldb_modules_load_dir(path, LDB_VERSION); + int ret = ldb_modules_load_path(path, LDB_VERSION); if (ret != LDB_SUCCESS) { ldb_asprintf_errstring(ldb, "Failed to load modules from: %s\n", path); } @@ -1045,7 +1045,7 @@ int ldb_modules_load(const char *modules_path, const char *version) for (tok=strtok_r(path, ":", &tok_ptr); tok; tok=strtok_r(NULL, ":", &tok_ptr)) { - ret = ldb_modules_load_dir(tok, version); + ret = ldb_modules_load_path(tok, version); if (ret != LDB_SUCCESS) { talloc_free(path); return ret; |