Beispiel #1
0
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;
}
Beispiel #2
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;
}