Clarify the linked attribute module behaviour with comments
authorAndrew Bartlett <abartlet@samba.org>
Thu, 23 Oct 2008 01:50:22 +0000 (12:50 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 23 Oct 2008 01:50:22 +0000 (12:50 +1100)
source4/dsdb/samdb/ldb_modules/linked_attributes.c

index 14fd107d81d504f347f39bfde334121fb317ffee..190a66cdb3ef13b3becb901c8ec108d0942a2605 100644 (file)
@@ -466,6 +466,9 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
                                        }
                                }
                        } else {
+                               /* Flag that there was a DELETE
+                                * without a value specified, so we
+                                * need to look for the old value */
                                store_el = true;
                        }
 
@@ -475,6 +478,7 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
                if (store_el) {
                        struct ldb_message_element *search_el;
 
+                       /* Fill out ac->rc only if we have to find the old values */
                        if (!ac->rc) {
                                ac->rc = talloc_zero(ac, struct replace_context);
                                if (!ac->rc) {
@@ -499,6 +503,9 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
 
        /* both replace and delete without values are handled in the callback
         * after the search on the entry to be modified is performed */
+
+       /* Only bother doing a search of this entry (to find old
+        * values) if replace or delete operations are attempted */
        if (ac->rc) {
                const char **attrs;
 
@@ -527,9 +534,10 @@ static int linked_attributes_modify(struct ldb_module *module, struct ldb_reques
                        ret = ldb_next_request(module, search_req);
                }
 
+               
        } else {
                if (ac->ops) {
-                       /* start the mod requests chain */
+                       /* Jump directly to handling the modifies */
                        ret = la_do_mod_request(ac);
                } else {
                        /* nothing to do for this module, proceed */