From: Howard Chu Date: Sun, 25 Jul 1999 22:16:01 +0000 (+0000) Subject: Moved unbind processing into connection_destroy. unbind handler is not needed. X-Git-Tag: OPENLDAP_REL_ENG_2_BP~30 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=04c5711506f17cc7403240c1f335527c6bccaa33;p=openldap Moved unbind processing into connection_destroy. unbind handler is not needed. --- diff --git a/servers/slapd/back-ldap/external.h b/servers/slapd/back-ldap/external.h index d71238c54f..8d90ee4d00 100644 --- a/servers/slapd/back-ldap/external.h +++ b/servers/slapd/back-ldap/external.h @@ -19,8 +19,8 @@ extern int ldap_back_bind LDAP_P(( BackendDB *bd, char *dn, int method, char* mech, struct berval *cred, char** edn )); -extern int ldap_back_unbind LDAP_P(( BackendDB *bd, - Connection *conn, Operation *op )); +extern int ldap_back_conn_destroy LDAP_P(( BackendDB *bd, + Connection *conn )); extern int ldap_back_search LDAP_P(( BackendDB *bd, Connection *conn, Operation *op, diff --git a/servers/slapd/back-ldap/init.c b/servers/slapd/back-ldap/init.c index 5367bc1e4b..63cbf896a3 100644 --- a/servers/slapd/back-ldap/init.c +++ b/servers/slapd/back-ldap/init.c @@ -61,7 +61,7 @@ ldap_back_initialize( bi->bi_db_destroy = ldap_back_db_destroy; bi->bi_op_bind = ldap_back_bind; - bi->bi_op_unbind = ldap_back_unbind; + bi->bi_op_unbind = 0; bi->bi_op_search = ldap_back_search; bi->bi_op_compare = ldap_back_compare; bi->bi_op_modify = ldap_back_modify; @@ -73,7 +73,7 @@ ldap_back_initialize( bi->bi_acl_group = 0; bi->bi_connection_init = 0; - bi->bi_connection_destroy = 0; + bi->bi_connection_destroy = ldap_back_conn_destroy; return 0; } diff --git a/servers/slapd/back-ldap/unbind.c b/servers/slapd/back-ldap/unbind.c index 8f1a5f3c78..09075aa69d 100644 --- a/servers/slapd/back-ldap/unbind.c +++ b/servers/slapd/back-ldap/unbind.c @@ -32,24 +32,26 @@ #include "back-ldap.h" int -ldap_back_unbind( +ldap_back_conn_destroy( Backend *be, - Connection *conn, - Operation *op + Connection *conn ) { struct ldapinfo *li = (struct ldapinfo *) be->be_private; struct ldapconn *lc, *lp; + ldap_pvt_thread_mutex_lock( &li->conn_mutex ); for (lc = li->lcs, lp = (struct ldapconn *)&li->lcs; lc; lp=lc, lc=lc->next) - if (lc->conn == conn) + if (lc->conn == conn) { + lp->next = lc->next; break; + } + ldap_pvt_thread_mutex_unlock( &li->conn_mutex ); if (lc) { if (lc->bound) ldap_unbind(lc->ld); - lp->next = lc->next; free(lc); }