From 6280725b47391c69dd7db1133c15bd0ce7418da6 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 10 Oct 2010 16:56:55 +0200 Subject: samdb: Handle schema setup in samdb, not in more generic ldbsamba. --- source4/dsdb/samdb/samdb.c | 9 +++++++++ source4/lib/ldb-samba/ldb_wrap.c | 11 ++--------- source4/lib/ldb-samba/ldif_handlers.c | 1 - source4/lib/ldb-samba/wscript_build | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/source4/dsdb/samdb/samdb.c b/source4/dsdb/samdb/samdb.c index 637da4fcf2..081ee7e2ee 100644 --- a/source4/dsdb/samdb/samdb.c +++ b/source4/dsdb/samdb/samdb.c @@ -126,13 +126,22 @@ struct ldb_context *samdb_connect(TALLOC_CTX *mem_ctx, struct auth_session_info *session_info) { struct ldb_context *ldb; + struct dsdb_schema *schema; ldb = ldb_wrap_connect(mem_ctx, ev_ctx, lp_ctx, lpcfg_sam_url(lp_ctx), session_info, samdb_credentials(ev_ctx, lp_ctx), 0); + if (!ldb) { return NULL; } + + schema = dsdb_get_schema(ldb, NULL); + /* make the resulting schema global */ + if (schema) { + dsdb_make_schema_global(ldb, schema); + } + return ldb; } diff --git a/source4/lib/ldb-samba/ldb_wrap.c b/source4/lib/ldb-samba/ldb_wrap.c index ebc1818c76..7cf9128e96 100644 --- a/source4/lib/ldb-samba/ldb_wrap.c +++ b/source4/lib/ldb-samba/ldb_wrap.c @@ -61,7 +61,7 @@ static void ldb_wrap_debug(void *context, enum ldb_debug_level level, case LDB_DEBUG_TRACE: samba_level = 5; break; - + }; vasprintf(&s, fmt, ap); if (!s) return; @@ -117,6 +117,7 @@ static int ldb_wrap_destructor(struct ldb_wrap *w) return 0; } + /* wrapped connection to a ldb database to close just talloc_free() the returned ldb_context @@ -267,14 +268,6 @@ static int ldb_wrap_destructor(struct ldb_wrap *w) DLIST_ADD(ldb_wrap_list, w); - /* make the resulting schema global */ - if (lp_ctx != NULL && strcmp(lpcfg_sam_url(lp_ctx), url) == 0) { - struct dsdb_schema *schema = dsdb_get_schema(ldb, NULL); - if (schema) { - dsdb_make_schema_global(ldb, schema); - } - } - DEBUG(3,("ldb_wrap open of %s\n", url)); talloc_set_destructor(w, ldb_wrap_destructor); diff --git a/source4/lib/ldb-samba/ldif_handlers.c b/source4/lib/ldb-samba/ldif_handlers.c index 324209b836..7cb42e36dc 100644 --- a/source4/lib/ldb-samba/ldif_handlers.c +++ b/source4/lib/ldb-samba/ldif_handlers.c @@ -1299,7 +1299,6 @@ int ldb_register_samba_handlers(struct ldb_context *ldb) return ret; } - } return LDB_SUCCESS; diff --git a/source4/lib/ldb-samba/wscript_build b/source4/lib/ldb-samba/wscript_build index 7fdaac8b90..d647884353 100644 --- a/source4/lib/ldb-samba/wscript_build +++ b/source4/lib/ldb-samba/wscript_build @@ -9,7 +9,7 @@ bld.SAMBA_SUBSYSTEM('LDBSAMBA', autoproto='ldif_handlers_proto.h', public_deps='ldb', public_headers='ldb_wrap.h', - deps='LIBSECURITY SAMDB_SCHEMA LIBNDR NDR_DRSBLOBS CREDENTIALS UTIL_LDB NDR_DNSP' + deps='LIBSECURITY LIBNDR NDR_DRSBLOBS CREDENTIALS UTIL_LDB NDR_DNSP' ) -- cgit