/* unbind.c - ldap backend unbind function */
/* $OpenLDAP$ */
/*
- * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/* This is an altered version */
struct ldapinfo *li = (struct ldapinfo *) be->be_private;
struct ldapconn *lc, lc_curr;
+#ifdef NEW_LOGGING
+ LDAP_LOG( BACK_LDAP, INFO,
+ "ldap_back_conn_destroy: fetching conn %ld\n", conn->c_connid, 0, 0 );
+#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) {
+#ifdef NEW_LOGGING
+ LDAP_LOG( BACK_LDAP, DETAIL1,
+ "ldap_back_conn_destroy: destroying conn %ld\n",
+ conn->c_connid, 0, 0 );
+#else /* !NEW_LOGGING */
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 );
-
+#endif
+
+#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 ) {
+ ch_free( lc->bound_dn.bv_val );
+ }
+ if ( lc->cred.bv_val ) {
+ ch_free( lc->cred.bv_val );
}
- free( lc );
+ ch_free( lc );
}
/* no response to unbind */