struct ldapinfo *li = (struct ldapinfo *) be->be_private;
struct ldapconn *lc, lc_curr;
+#ifdef NEW_LOGGING
+ LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
+ "ldap_back_conn_destroy: fetching conn %ld\n",
+ conn->c_connid ));
+#else /* !NEW_LOGGING */
Debug( LDAP_DEBUG_TRACE,
- "=>ldap_back_conn_destroy: fetching conn %d\n",
+ "=>ldap_back_conn_destroy: fetching conn %ld\n",
conn->c_connid, 0, 0 );
-
+#endif /* !NEW_LOGGING */
lc_curr.conn = conn;
ldap_pvt_thread_mutex_lock( &li->conn_mutex );
- lc = avl_delete( &li->conntree, (caddr_t)&lc_curr, conn_cmp );
+ lc = avl_delete( &li->conntree, (caddr_t)&lc_curr, ldap_back_conn_cmp );
ldap_pvt_thread_mutex_unlock( &li->conn_mutex );
if (lc) {
Debug( LDAP_DEBUG_TRACE,
- "=>ldap_back_conn_destroy: destroying conn %d\n",
+ "=>ldap_back_conn_destroy: destroying conn %ld\n",
lc->conn->c_connid, 0, 0 );
-
+
+#ifdef ENABLE_REWRITE
+ /*
+ * Cleanup rewrite session
+ */
+ rewrite_session_delete( li->rwinfo, conn );
+#endif /* ENABLE_REWRITE */
+
/*
* Needs a test because the handler may be corrupted,
* and calling ldap_unbind on a corrupted header results
* in a segmentation fault
*/
ldap_unbind(lc->ld);
- if ( lc->bound_dn ) {
- free( lc->bound_dn );
+ if ( lc->bound_dn.bv_val ) {
+ free( lc->bound_dn.bv_val );
}
free( lc );
}