~ubuntu-branches/debian/jessie/389-ds-base/jessie

« back to all changes in this revision

Viewing changes to ldap/servers/plugins/chainingdb/cb_instance.c

  • Committer: Package Import Robot
  • Author(s): Timo Aaltonen
  • Date: 2014-10-06 17:13:01 UTC
  • mfrom: (0.2.5)
  • Revision ID: package-import@ubuntu.com-20141006171301-px57k3g1k4ksj8cg
Tags: 1.3.3.3-1
* New upstream release.
* Dropped upstreamed patches, refresh others.
* control, rules, 389-ds-base.install: Add support for systemd.
* fix-obsolete-target.diff: Drop syslog.target from the service files.
* 389-ds-base.links: Mask the initscript so that it's not used with systemd.

Show diffs side-by-side

added added

removed removed

Lines of Context:
185
185
** Allocate a new chaining backend instance. Internal structure
186
186
*/
187
187
 
188
 
static cb_backend_instance * cb_instance_alloc(cb_backend * cb, char * name, char * basedn) {
189
 
 
 
188
static cb_backend_instance *
 
189
cb_instance_alloc(cb_backend *cb, char *name, char *basedn)
 
190
{
190
191
        int i;
191
192
 
192
193
        cb_backend_instance * inst =
252
253
 
253
254
                if (inst->bind_pool)
254
255
                {
255
 
                        cb_close_conn_pool(inst->bind_pool);
 
256
                        cb_close_conn_pool(inst->bind_pool);
256
257
                        slapi_destroy_condvar(inst->bind_pool->conn.conn_list_cv);
257
258
                        slapi_destroy_mutex(inst->bind_pool->conn.conn_list_mutex);
258
259
                        slapi_ch_free((void **) &inst->bind_pool);
260
261
 
261
262
                if (inst->pool)
262
263
                {
263
 
                        cb_close_conn_pool(inst->pool);
 
264
                        cb_close_conn_pool(inst->pool);
264
265
                        slapi_destroy_condvar(inst->pool->conn.conn_list_cv);
265
266
                        slapi_ch_free_string(&inst->pool->password);
266
267
                        slapi_ch_free_string(&inst->pool->binddn);
280
281
 
281
282
                slapi_rwlock_unlock(inst->rwl_config_lock);
282
283
                slapi_destroy_rwlock(inst->rwl_config_lock);
283
 
 
 
284
                charray_free(inst->url_array);
284
285
                slapi_ch_free((void **) &inst);
285
286
        }
286
287
/* XXXSD */
852
853
                }
853
854
 
854
855
                /* normalize and ignore the case */
 
856
                slapi_ch_free_string(&inst->pool->binddn);
855
857
                inst->pool->binddn = slapi_create_dn_string_case("%s", (char *)value);
856
858
                /* not normalized */
857
859
                inst->pool->binddn2=slapi_ch_strdup((char *) value);
1684
1686
}
1685
1687
 
1686
1688
/*
1687
 
** Ooops!!! The backend instance is beeing deleted
 
1689
** Ooops!!! The backend instance is being deleted
1688
1690
*/
1689
1691
 
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) {
1692
1694
 
1693
 
        cb_backend_instance * inst = (cb_backend_instance *) arg;
 
1695
        cb_backend_instance * inst = (cb_backend_instance *) arg;
1694
1696
        int rc;
1695
1697
        Slapi_Entry * anEntry=NULL;
1696
1698
        Slapi_DN * aDn;
1703
1705
        /* Now it is safe to stop */
1704
1706
        /* No pending op          */
1705
1707
 
1706
 
 
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);
1710
 
 
1711
 
        slapi_config_remove_callback(SLAPI_OPERATION_DELETE, DSE_FLAG_POSTOP, inst->configDn,
1712
 
                 LDAP_SCOPE_BASE, "(objectclass=*)", cb_instance_delete_config_callback);
1713
 
 
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);
1718
1717
 
1719
1718
        /* At this point, the monitor entry should have been removed */
1720
1719
        /* If not, manually call delete callback                     */
1721
1720
 
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 );
1725
1724
                if (anEntry) 
1726
 
                        slapi_entry_free(anEntry);
 
1725
                        slapi_entry_free(anEntry);
1727
1726
        }
1728
 
        slapi_sdn_done(aDn);
1729
 
        slapi_sdn_free(&aDn);
 
1727
        slapi_sdn_done(aDn);
 
1728
        slapi_sdn_free(&aDn);
1730
1729
 
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);
1736
1735
 
1737
1736
        return SLAPI_DSE_CALLBACK_OK;
1738
1737
}
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)) 
1751
1750
                {
1752
 
 
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) 
1903
1901
        { 
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);
1908
 
 
 
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);
1911
1908
 
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);
 
1911
 
 
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);
1916
1914
        }
1917
1915
 
1918
1916
        /* Notify the front-end */