int backsql_db_destroy( BackendDB *bd ) { backsql_info *si = (backsql_info*)bd->be_private; Debug( LDAP_DEBUG_TRACE, "==>backsql_db_destroy()\n", 0, 0, 0 ); ldap_pvt_thread_mutex_lock( &si->dbconn_mutex ); backsql_free_db_env( si ); ldap_pvt_thread_mutex_unlock( &si->dbconn_mutex ); ldap_pvt_thread_mutex_destroy( &si->dbconn_mutex ); ldap_pvt_thread_mutex_lock( &si->schema_mutex ); backsql_destroy_schema_map( si ); ldap_pvt_thread_mutex_unlock( &si->schema_mutex ); ldap_pvt_thread_mutex_destroy( &si->schema_mutex ); free( si->dbname ); free( si->dbuser ); if ( si->dbpasswd ) { free( si->dbpasswd ); } if ( si->dbhost ) { free( si->dbhost ); } if ( si->upper_func.bv_val ) { free( si->upper_func.bv_val ); free( si->upper_func_open.bv_val ); free( si->upper_func_close.bv_val ); } free( si->subtree_cond.bv_val ); free( si->oc_query ); free( si->at_query ); free( si->insentry_query ); free( si->delentry_query ); free( si ); Debug( LDAP_DEBUG_TRACE, "<==backsql_db_destroy()\n", 0, 0, 0 ); return 0; }
int backsql_db_destroy( BackendDB *bd, ConfigReply *cr ) { backsql_info *bi = (backsql_info*)bd->be_private; Debug( LDAP_DEBUG_TRACE, "==>backsql_db_destroy()\n", 0, 0, 0 ); backsql_free_db_env( bi ); ldap_pvt_thread_mutex_destroy( &bi->sql_dbconn_mutex ); backsql_destroy_schema_map( bi ); ldap_pvt_thread_mutex_destroy( &bi->sql_schema_mutex ); if ( bi->sql_dbname ) { ch_free( bi->sql_dbname ); } if ( bi->sql_dbuser ) { ch_free( bi->sql_dbuser ); } if ( bi->sql_dbpasswd ) { ch_free( bi->sql_dbpasswd ); } if ( bi->sql_dbhost ) { ch_free( bi->sql_dbhost ); } if ( bi->sql_upper_func.bv_val ) { ch_free( bi->sql_upper_func.bv_val ); ch_free( bi->sql_upper_func_open.bv_val ); ch_free( bi->sql_upper_func_close.bv_val ); } if ( bi->sql_concat_func ) { ber_bvarray_free( bi->sql_concat_func ); } if ( !BER_BVISNULL( &bi->sql_strcast_func ) ) { ch_free( bi->sql_strcast_func.bv_val ); } if ( !BER_BVISNULL( &bi->sql_children_cond ) ) { ch_free( bi->sql_children_cond.bv_val ); } if ( !BER_BVISNULL( &bi->sql_dn_match_cond ) ) { ch_free( bi->sql_dn_match_cond.bv_val ); } if ( !BER_BVISNULL( &bi->sql_subtree_cond ) ) { ch_free( bi->sql_subtree_cond.bv_val ); } if ( !BER_BVISNULL( &bi->sql_dn_oc_aliasing ) ) { ch_free( bi->sql_dn_oc_aliasing.bv_val ); } if ( bi->sql_oc_query ) { ch_free( bi->sql_oc_query ); } if ( bi->sql_at_query ) { ch_free( bi->sql_at_query ); } if ( bi->sql_id_query ) { ch_free( bi->sql_id_query ); } if ( bi->sql_has_children_query ) { ch_free( bi->sql_has_children_query ); } if ( bi->sql_insentry_stmt ) { ch_free( bi->sql_insentry_stmt ); } if ( bi->sql_delentry_stmt ) { ch_free( bi->sql_delentry_stmt ); } if ( bi->sql_renentry_stmt ) { ch_free( bi->sql_renentry_stmt ); } if ( bi->sql_delobjclasses_stmt ) { ch_free( bi->sql_delobjclasses_stmt ); } if ( !BER_BVISNULL( &bi->sql_aliasing ) ) { ch_free( bi->sql_aliasing.bv_val ); } if ( !BER_BVISNULL( &bi->sql_aliasing_quote ) ) { ch_free( bi->sql_aliasing_quote.bv_val ); } if ( bi->sql_anlist ) { int i; for ( i = 0; !BER_BVISNULL( &bi->sql_anlist[ i ].an_name ); i++ ) { ch_free( bi->sql_anlist[ i ].an_name.bv_val ); } ch_free( bi->sql_anlist ); } if ( bi->sql_baseObject ) { entry_free( bi->sql_baseObject ); } ch_free( bi ); Debug( LDAP_DEBUG_TRACE, "<==backsql_db_destroy()\n", 0, 0, 0 ); return 0; }