]> git.sur5r.net Git - openldap/commitdiff
ITS#5607
authorQuanah Gibson-Mount <quanah@openldap.org>
Wed, 3 Sep 2008 00:45:16 +0000 (00:45 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Wed, 3 Sep 2008 00:45:16 +0000 (00:45 +0000)
CHANGES
servers/slapd/back-sql/sql-wrap.c

diff --git a/CHANGES b/CHANGES
index d9fe51233f9784b9e62cd5eb6eb38296c372177a..09cf77992932088d34d2c46aac610c9e12ea17c1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,7 @@ OpenLDAP 2.4 Change Log
 OpenLDAP 2.4.12 Engineering
        Fixed slapd socket closing on Windows (ITS#5606)
        Fixed slapd-meta quarantine behavior (ITS#5592)
+       Fixed slapd-sql freeing of connection (ITS#5607)
        Fixed slapo-constraint string termination (ITS#5609)
        Fixed slapo-rwm callback cleanup (ITS#5601)
        Build Environment
index 39fbda86e58d2e40eb4853bd6b32b63037ea89e8..c7b3c60bb05e68cae533ed56587d4876f949fd76 100644 (file)
@@ -462,28 +462,31 @@ backsql_open_db_handle(
        return LDAP_SUCCESS;
 }
 
+static void    *backsql_db_conn_dummy;
+
+static void
+backsql_db_conn_keyfree(
+       void            *key,
+       void            *data )
+{
+       (void)backsql_close_db_handle( (SQLHDBC)data );
+}
+
 int
 backsql_free_db_conn( Operation *op, SQLHDBC dbh )
 {
        Debug( LDAP_DEBUG_TRACE, "==>backsql_free_db_conn()\n", 0, 0, 0 );
 
        (void)backsql_close_db_handle( dbh );
+       ldap_pvt_thread_pool_setkey( op->o_threadctx,
+               &backsql_db_conn_dummy, (void *)SQL_NULL_HDBC,
+               backsql_db_conn_keyfree, NULL, NULL );
 
        Debug( LDAP_DEBUG_TRACE, "<==backsql_free_db_conn()\n", 0, 0, 0 );
 
        return LDAP_SUCCESS;
 }
 
-static void    *backsql_db_conn_dummy;
-
-static void
-backsql_db_conn_keyfree(
-       void            *key,
-       void            *data )
-{
-       backsql_close_db_handle( (SQLHDBC)data );
-}
-
 int
 backsql_get_db_conn( Operation *op, SQLHDBC *dbhp )
 {
@@ -514,9 +517,8 @@ backsql_get_db_conn( Operation *op, SQLHDBC *dbhp )
                }
 
                if ( op->o_threadctx ) {
-                       void            *data = NULL;
+                       void            *data = (void *)dbh;
 
-                       data = (void *)dbh;
                        ldap_pvt_thread_pool_setkey( op->o_threadctx,
                                        &backsql_db_conn_dummy, data,
                                        backsql_db_conn_keyfree, NULL, NULL );