]> git.sur5r.net Git - openldap/commitdiff
unregister controls when removing syncprov, ppolicy, valsort, chain or
authorQuanah Gibson-Mount <quanah@openldap.org>
Mon, 7 Nov 2011 20:44:58 +0000 (12:44 -0800)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 7 Nov 2011 20:44:58 +0000 (12:44 -0800)
sssvlv overlay

servers/slapd/back-ldap/chain.c
servers/slapd/overlays/ppolicy.c
servers/slapd/overlays/sssvlv.c
servers/slapd/overlays/syncprov.c
servers/slapd/overlays/valsort.c

index 41bb6ef1d3ba30abe8e93bd3619530c3207cd937..8f37efb236c30ac0f6a80f2ba4f0756f5855fef0 100644 (file)
@@ -1979,6 +1979,11 @@ ldap_chain_db_close(
        BackendDB       *be,
        ConfigReply     *cr )
 {
+#ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR
+#ifdef SLAP_CONFIG_DELETE
+       overlay_unregister_control( be, LDAP_CONTROL_X_CHAINING_BEHAVIOR );
+#endif /* SLAP_CONFIG_DELETE */
+#endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
        return ldap_chain_db_func( be, db_close );
 }
 
index fad06485802d5b3f80679b5a27c7db77f1ec04b9..b5b8102723fc35d575a494e6973e53d8a12e1b29 100644 (file)
@@ -2311,6 +2311,10 @@ ppolicy_close(
        slap_overinst *on = (slap_overinst *) be->bd_info;
        pp_info *pi = on->on_bi.bi_private;
 
+#ifdef SLAP_CONFIG_DELETE
+       overlay_unregister_control( be, LDAP_CONTROL_PASSWORDPOLICYREQUEST );
+#endif /* SLAP_CONFIG_DELETE */
+
        /* Perhaps backover should provide bi_destroy hooks... */
        ov_count--;
        if ( ov_count <=0 && pwcons ) {
index 0cb7a7e84521c5f33ba2f940793a3fbe5ed526aa..d59b758d1e420b1e75efc29c86b64d5b08846620 100644 (file)
@@ -1336,6 +1336,11 @@ static int sssvlv_db_destroy(
                ldap_pvt_thread_mutex_destroy( &sort_conns_mutex );
        }
 
+#ifdef SLAP_CONFIG_DELETE
+       overlay_unregister_control( be, LDAP_CONTROL_SORTREQUEST );
+       overlay_unregister_control( be, LDAP_CONTROL_VLVREQUEST );
+#endif /* SLAP_CONFIG_DELETE */
+
        if ( si ) {
                ch_free( si );
                on->on_bi.bi_private = NULL;
index a081dd776954cb5a686c03827f67ce95f4925b13..cc5d4b7ee4f0ad90af772f90fdee2d997d09366c 100644 (file)
@@ -3162,6 +3162,20 @@ syncprov_db_close(
                syncprov_checkpoint( op, on );
        }
 
+#ifdef SLAP_CONFIG_DELETE
+       ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
+       for ( so=si->si_ops, sonext=so;  so; so=sonext  ) {
+               SlapReply rs = {REP_RESULT};
+               rs.sr_err = LDAP_UNAVAILABLE;
+               send_ldap_result( so->s_op, &rs );
+               sonext=so->s_next;
+               syncprov_drop_psearch( so, 0);
+       }
+       si->si_ops=NULL;
+       ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
+       overlay_unregister_control( be, LDAP_CONTROL_SYNC );
+#endif /* SLAP_CONFIG_DELETE */
+
     return 0;
 }
 
index 80d938238ce733b55cd129b70fbd3c3a8d9763b1..033cbf6d8cb785b85edb36adeec95a53bd56bdc5 100644 (file)
@@ -490,6 +490,10 @@ valsort_destroy(
        slap_overinst *on = (slap_overinst *)be->bd_info;
        valsort_info *vi = on->on_bi.bi_private, *next;
 
+#ifdef SLAP_CONFIG_DELETE
+       overlay_unregister_control( be, LDAP_CONTROL_VALSORT );
+#endif /* SLAP_CONFIG_DELETE */
+
        for (; vi; vi = next) {
                next = vi->vi_next;
                ch_free( vi->vi_dn.bv_val );