]> git.sur5r.net Git - openldap/commitdiff
config cleanup handler
authorHoward Chu <hyc@openldap.org>
Thu, 21 Apr 2005 19:31:39 +0000 (19:31 +0000)
committerHoward Chu <hyc@openldap.org>
Thu, 21 Apr 2005 19:31:39 +0000 (19:31 +0000)
servers/slapd/bconfig.c
servers/slapd/config.h

index 5d3995954e60fa291141bce815ac6222509f891d..0e05bc25611bc8144ce10cace33b5dc0f0f57bab 100644 (file)
@@ -3897,6 +3897,8 @@ config_modify_internal( CfEntryInfo *ce, Operation *op, SlapReply *rs,
        }
 
 out:
+       if ( ca.cleanup )
+               ca.cleanup( &ca );
        if ( rc == LDAP_SUCCESS ) {
                attrs_free( save_attrs );
        } else {
index ff0d907e9734ee131e5a875dfa4bee714b3cd8ee..30b2d199e80c112efd4ffc717dd78f0b4fa5a754 100644 (file)
@@ -81,6 +81,10 @@ typedef struct ConfigOCs {
 #endif
 } ConfigOCs;
 
+struct config_args_s;
+
+typedef int (ConfigDriver)(struct config_args_s *c);
+
 typedef struct config_args_s {
        int argc;
        char **argv;
@@ -114,6 +118,7 @@ typedef struct config_args_s {
        BackendDB *be;
        BackendInfo *bi;
        void *private;  /* anything */
+       ConfigDriver *cleanup;
 } ConfigArgs;
 
 #define value_int values.v_int
@@ -124,8 +129,6 @@ typedef struct config_args_s {
 #define value_dn values.v_dn.vdn_dn
 #define value_ndn values.v_dn.vdn_ndn
 
-typedef int (ConfigDriver)(ConfigArgs *c);
-
 int config_register_schema(ConfigTable *ct, ConfigOCs *co);
 int config_get_vals(ConfigTable *ct, ConfigArgs *c);
 int config_add_vals(ConfigTable *ct, ConfigArgs *c);