1687
** Ooops!!! The backend instance is beeing deleted
1689
** Ooops!!! The backend instance is being deleted
1690
1692
int cb_instance_delete_config_callback(Slapi_PBlock *pb, Slapi_Entry* e, Slapi_Entry* e2,
1691
int *returncode, char *returntext, void *arg) {
1693
int *returncode, char *returntext, void *arg) {
1693
cb_backend_instance * inst = (cb_backend_instance *) arg;
1695
cb_backend_instance * inst = (cb_backend_instance *) arg;
1695
1697
Slapi_Entry * anEntry=NULL;
1696
1698
Slapi_DN * aDn;
1703
1705
/* Now it is safe to stop */
1704
1706
/* No pending op */
1707
1708
/* unregister callbacks */
1708
slapi_config_remove_callback(SLAPI_OPERATION_SEARCH, DSE_FLAG_PREOP, inst->configDn,
1709
slapi_config_remove_callback(SLAPI_OPERATION_SEARCH, DSE_FLAG_PREOP, inst->configDn,
1709
1710
LDAP_SCOPE_BASE, "(objectclass=*)", cb_instance_search_config_callback);
1711
slapi_config_remove_callback(SLAPI_OPERATION_DELETE, DSE_FLAG_POSTOP, inst->configDn,
1712
LDAP_SCOPE_BASE, "(objectclass=*)", cb_instance_delete_config_callback);
1714
slapi_config_remove_callback(SLAPI_OPERATION_MODIFY, DSE_FLAG_PREOP, inst->configDn,
1711
slapi_config_remove_callback(SLAPI_OPERATION_DELETE, DSE_FLAG_POSTOP, inst->configDn,
1712
LDAP_SCOPE_BASE, "(objectclass=*)", cb_instance_delete_config_callback);
1713
slapi_config_remove_callback(SLAPI_OPERATION_MODIFY, DSE_FLAG_PREOP, inst->configDn,
1715
1714
LDAP_SCOPE_BASE, "(objectclass=*)", cb_instance_modify_config_check_callback);
1716
slapi_config_remove_callback(SLAPI_OPERATION_MODIFY, DSE_FLAG_POSTOP, inst->configDn,
1715
slapi_config_remove_callback(SLAPI_OPERATION_MODIFY, DSE_FLAG_POSTOP, inst->configDn,
1717
1716
LDAP_SCOPE_BASE, "(objectclass=*)", cb_instance_modify_config_callback);
1719
1718
/* At this point, the monitor entry should have been removed */
1720
1719
/* If not, manually call delete callback */
1722
aDn = slapi_sdn_new_dn_byref(inst->monitorDn);
1723
if ( LDAP_SUCCESS==(slapi_search_internal_get_entry(aDn,NULL, &anEntry,inst->backend_type->identity))) {
1721
aDn = slapi_sdn_new_dn_byref(inst->monitorDn);
1722
if ( LDAP_SUCCESS==(slapi_search_internal_get_entry(aDn,NULL, &anEntry,inst->backend_type->identity))) {
1724
1723
cb_delete_monitor_callback( NULL, anEntry, NULL, &rc , NULL, inst );
1726
slapi_entry_free(anEntry);
1725
slapi_entry_free(anEntry);
1728
slapi_sdn_done(aDn);
1729
slapi_sdn_free(&aDn);
1727
slapi_sdn_done(aDn);
1728
slapi_sdn_free(&aDn);
1731
1730
/* free resources */
1732
cb_close_conn_pool(inst->bind_pool);
1733
cb_close_conn_pool(inst->pool);
1731
cb_close_conn_pool(inst->bind_pool);
1732
cb_close_conn_pool(inst->pool);
1734
1733
slapi_be_free(&(inst->inst_be));
1735
cb_instance_free(inst);
1734
cb_instance_free(inst);
1737
1736
return SLAPI_DSE_CALLBACK_OK;
1749
1748
if (LDAP_SUCCESS == cb_config_add_dse_entries(inst->backend_type, cb_skeleton_entries,
1750
1749
inst->inst_name,CB_PLUGIN_NAME, NULL))
1753
1751
/* add monitor callbacks */
1754
1752
slapi_config_register_callback(SLAPI_OPERATION_SEARCH, DSE_FLAG_PREOP, inst->monitorDn, LDAP_SCOPE_BASE,
1755
1753
"(objectclass=*)", cb_search_monitor_callback, (void *) inst);
1902
1900
if (!inst->isconfigured)
1904
1902
slapi_config_register_callback(SLAPI_OPERATION_MODIFY, DSE_FLAG_PREOP, inst->configDn,
1905
LDAP_SCOPE_BASE,"(objectclass=*)",cb_instance_modify_config_check_callback, (void *) inst);
1903
LDAP_SCOPE_BASE,"(objectclass=*)",cb_instance_modify_config_check_callback, (void *) inst);
1906
1904
slapi_config_register_callback(SLAPI_OPERATION_MODIFY, DSE_FLAG_POSTOP, inst->configDn,
1907
LDAP_SCOPE_BASE,"(objectclass=*)",cb_instance_modify_config_callback, (void *) inst);
1905
LDAP_SCOPE_BASE,"(objectclass=*)",cb_instance_modify_config_callback, (void *) inst);
1909
1906
slapi_config_register_callback(SLAPI_OPERATION_SEARCH, DSE_FLAG_PREOP, inst->configDn,
1910
LDAP_SCOPE_BASE,"(objectclass=*)", cb_instance_search_config_callback, (void *) inst);
1907
LDAP_SCOPE_BASE,"(objectclass=*)", cb_instance_search_config_callback, (void *) inst);
1912
1909
/* allow deletion otherwise impossible to remote a backend instance */
1913
1910
/* dynamically... */
1914
slapi_config_register_callback(SLAPI_OPERATION_DELETE, DSE_FLAG_POSTOP, inst->configDn,
1915
LDAP_SCOPE_BASE,"(objectclass=*)", cb_instance_delete_config_callback, (void *) inst);
1912
slapi_config_register_callback(SLAPI_OPERATION_DELETE, DSE_FLAG_POSTOP, inst->configDn,
1913
LDAP_SCOPE_BASE,"(objectclass=*)", cb_instance_delete_config_callback, (void *) inst);
1918
1916
/* Notify the front-end */