Removed ldb_modify_ctrl from ldb, implemented as a static in ldap_backend.
authorNadezhda Ivanova <nadezhda.ivanova@postpath.com>
Tue, 15 Dec 2009 18:29:20 +0000 (20:29 +0200)
committerNadezhda Ivanova <nadezhda.ivanova@postpath.com>
Tue, 15 Dec 2009 18:29:20 +0000 (20:29 +0200)
source4/ldap_server/ldap_backend.c
source4/lib/ldb/common/ldb.c
source4/lib/ldb/include/ldb.h

index 5eabda972e8cfc40e5f0d529ab4c98a58b3817af..d983a542619d47cdb3fa550f2d2cc78a87933e6b 100644 (file)
@@ -171,6 +171,48 @@ static int map_ldb_error(TALLOC_CTX *mem_ctx, int ldb_err,
        /* result is 1:1 for now */
        return ldb_err;
 }
+/* create and execute a modify request */
+static int ldb_mod_req_with_controls(struct ldb_context *ldb,
+                                    const struct ldb_message *message,
+                                    struct ldb_control **controls)
+{
+       struct ldb_request *req;
+       int ret;
+
+       ret = ldb_msg_sanity_check(ldb, message);
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
+       ret = ldb_build_mod_req(&req, ldb, ldb,
+                                       message,
+                                       controls,
+                                       NULL,
+                                       ldb_op_default_callback,
+                                       NULL);
+
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
+       ret = ldb_transaction_start(ldb);
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
+       ret = ldb_request(ldb, req);
+       if (ret == LDB_SUCCESS) {
+               ret = ldb_wait(req->handle, LDB_WAIT_ALL);
+       }
+
+       if (ret == LDB_SUCCESS) {
+               return ldb_transaction_commit(ldb);
+       }
+       ldb_transaction_cancel(ldb);
+
+       talloc_free(req);
+       return ret;
+}
 
 /*
   connect to the sam database
@@ -546,7 +588,7 @@ reply:
        NT_STATUS_HAVE_NO_MEMORY(modify_reply);
 
        if (result == LDAP_SUCCESS) {
-               ldb_ret = ldb_modify_ctrl(samdb, msg, call->request->controls);
+               ldb_ret = ldb_mod_req_with_controls(samdb, msg, call->request->controls);
                result = map_ldb_error(local_ctx, ldb_ret, &errstr);
        }
 
index 94a5fb2153d7a3b73833411fd31ffdba5db8a16e..a3472a60e57213db43d4f9648c36c8653d8a6479 100644 (file)
@@ -1388,11 +1388,10 @@ int ldb_add(struct ldb_context *ldb,
 }
 
 /*
-  same as ldb_modify, but accepts controls
+  modify the specified attributes of a record
 */
-int ldb_modify_ctrl(struct ldb_context *ldb,
-                   const struct ldb_message *message,
-                   struct ldb_control **controls)
+int ldb_modify(struct ldb_context *ldb,
+              const struct ldb_message *message)
 {
        struct ldb_request *req;
        int ret;
@@ -1404,7 +1403,7 @@ int ldb_modify_ctrl(struct ldb_context *ldb,
 
        ret = ldb_build_mod_req(&req, ldb, ldb,
                                        message,
-                                       controls,
+                                       NULL,
                                        NULL,
                                        ldb_op_default_callback,
                                        NULL);
@@ -1417,14 +1416,6 @@ int ldb_modify_ctrl(struct ldb_context *ldb,
        talloc_free(req);
        return ret;
 }
-/*
-  modify the specified attributes of a record
-*/
-int ldb_modify(struct ldb_context *ldb,
-              const struct ldb_message *message)
-{
-       return ldb_modify_ctrl(ldb, message, NULL);
-}
 
 
 /*
index 2b80e42cb30e2a8621666bc7689554627b802e68..cf55f0ac6f3084e35544b03f4a73752a9584bd9a 100644 (file)
@@ -1222,24 +1222,6 @@ int ldb_search(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
 int ldb_add(struct ldb_context *ldb, 
            const struct ldb_message *message);
 
-/**
-  Modify the specified attributes of a record
-
-  This function modifies a record that is in the database.
-
-  \param ldb the context associated with the database (from
-  ldb_init())
-  \param message the message containing the changes required.
-
-  \param controls ldap controls for the request
-
-  \return result code (LDB_SUCCESS if the record was modified as
-  requested, otherwise a failure code)
-*/
-int ldb_modify_ctrl(struct ldb_context *ldb,
-                   const struct ldb_message *message,
-                   struct ldb_control **controls);
-
 /**
   Modify the specified attributes of a record