ldb:ldb_tdb.c - make "ltdb_add" more similar to "ltdb_modify"
[samba.git] / source4 / lib / ldb / ldb_tdb / ldb_tdb.c
index a498d541d372f61e4a678b1747cb68eac9b0f435..0e91b5bba6ab85041247e75a8c027a3ca4aa3b8b 100644 (file)
@@ -283,15 +283,6 @@ static int ltdb_add_internal(struct ldb_module *module,
        int ret = LDB_SUCCESS;
        unsigned int i;
 
-       ret = ltdb_check_special_dn(module, msg);
-       if (ret != LDB_SUCCESS) {
-               return ret;
-       }
-
-       if (ltdb_cache_load(module) != 0) {
-               return LDB_ERR_OPERATIONS_ERROR;
-       }
-
        for (i=0;i<msg->num_elements;i++) {
                struct ldb_message_element *el = &msg->elements[i];
                const struct ldb_schema_attribute *a = ldb_schema_attribute_by_name(ldb, el->name);
@@ -340,6 +331,11 @@ static int ltdb_add(struct ltdb_context *ctx)
        struct ldb_request *req = ctx->req;
        int ret = LDB_SUCCESS;
 
+       ret = ltdb_check_special_dn(module, req->op.add.message);
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        ldb_request_set_state(req, LDB_ASYNC_PENDING);
 
        if (ltdb_cache_load(module) != 0) {