From: Quanah Gibson-Mount Date: Wed, 3 Sep 2008 00:45:16 +0000 (+0000) Subject: ITS#5607 X-Git-Tag: OPENLDAP_REL_ENG_2_4_12~113 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=a17f23466f20ec37b8880670900c9b3aabb6c61a;p=openldap ITS#5607 --- diff --git a/CHANGES b/CHANGES index d9fe51233f..09cf779929 100644 --- 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 diff --git a/servers/slapd/back-sql/sql-wrap.c b/servers/slapd/back-sql/sql-wrap.c index 39fbda86e5..c7b3c60bb0 100644 --- a/servers/slapd/back-sql/sql-wrap.c +++ b/servers/slapd/back-sql/sql-wrap.c @@ -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 );