s4-ldapserver: support controls on ldap add and rename
authorAndrew Tridgell <tridge@samba.org>
Tue, 17 Aug 2010 01:12:09 +0000 (11:12 +1000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 17 Aug 2010 11:21:50 +0000 (21:21 +1000)
we need to pass the controls down to the add and rename ldb operations

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>

source4/ldap_server/ldap_backend.c

index e0f9ee1b5ddb9e7802231c6d2bc8acf408d07b7e..6faaa30c2f1efc64aaa0121c2efcc43763ada740 100644 (file)
@@ -294,9 +294,10 @@ static NTSTATUS ldapsrv_unwilling(struct ldapsrv_call *call, int error)
        return NT_STATUS_OK;
 }
 
-static int ldb_add_with_context(struct ldb_context *ldb,
-                               const struct ldb_message *message,
-                               void *context)
+static int ldb_add_with_controls(struct ldb_context *ldb,
+                                const struct ldb_message *message,
+                                struct ldb_control **controls,
+                                void *context)
 {
        struct ldb_request *req;
        int ret;
@@ -308,7 +309,7 @@ static int ldb_add_with_context(struct ldb_context *ldb,
 
        ret = ldb_build_add_req(&req, ldb, ldb,
                                        message,
-                                       NULL,
+                                       controls,
                                        context,
                                        ldb_modify_default_callback,
                                        NULL);
@@ -421,10 +422,11 @@ static int ldb_del_req_with_controls(struct ldb_context *ldb,
        return ret;
 }
 
-int ldb_rename_with_context(struct ldb_context *ldb,
-              struct ldb_dn *olddn,
-              struct ldb_dn *newdn,
-              void *context)
+int ldb_rename_with_controls(struct ldb_context *ldb,
+                            struct ldb_dn *olddn,
+                            struct ldb_dn *newdn,
+                            struct ldb_control **controls,
+                            void *context)
 {
        struct ldb_request *req;
        int ret;
@@ -851,7 +853,7 @@ reply:
        if (result == LDAP_SUCCESS) {
                res = talloc_zero(local_ctx, struct ldb_result);
                NT_STATUS_HAVE_NO_MEMORY(res);
-               ldb_ret = ldb_add_with_context(samdb, msg, res);
+               ldb_ret = ldb_add_with_controls(samdb, msg, call->request->controls, res);
                result = map_ldb_error(local_ctx, ldb_ret, ldb_errstring(samdb),
                                       &errstr);
        }
@@ -1015,7 +1017,7 @@ reply:
        if (result == LDAP_SUCCESS) {
                res = talloc_zero(local_ctx, struct ldb_result);
                NT_STATUS_HAVE_NO_MEMORY(res);
-               ldb_ret = ldb_rename_with_context(samdb, olddn, newdn, res);
+               ldb_ret = ldb_rename_with_controls(samdb, olddn, newdn, call->request->controls, res);
                result = map_ldb_error(local_ctx, ldb_ret, ldb_errstring(samdb),
                                       &errstr);
        }