]> git.sur5r.net Git - openldap/commitdiff
Updates from HEAD
authorKurt Zeilenga <kurt@openldap.org>
Mon, 16 Jan 2006 20:06:12 +0000 (20:06 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 16 Jan 2006 20:06:12 +0000 (20:06 +0000)
CHANGES
INSTALL
configure.in
doc/devel/todo
libraries/libldap/getdn.c
libraries/libldap/test.c
libraries/libldap_r/tpool.c

diff --git a/CHANGES b/CHANGES
index c1728108345eb41b57073417eb403b5f38b2c4cf..0e866b4d2caeab219abdc51b9272e11524dbb788 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,12 @@
 OpenLDAP 2.3 Change Log
 
 OpenLDAP 2.3.18 Engineering
+       Fixed slapd wake_listener
+       Removed slapd-bdb/hdb extraneous yields (ITS#3950)
+       Build Environment
+               Removed problematic Linux sched_yield(2) workarounds (ITS#3950)
+       Documentation
+               Updated release documents
 
 OpenLDAP 2.3.17 Release
        Fixed slapd anonymous proxy authorization issue (ITS#4320)
diff --git a/INSTALL b/INSTALL
index 68c0c86006f585f0f8024f3f58d47e3a7b86fe24..e1949d1f7a9175cdd5757bc7d5a66095e41d6a88 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -74,7 +74,7 @@ Making and Installing the OpenLDAP Distribution
 6.   Test the standalone system:
 
      This step requires the standalone LDAP server, slapd(8), with
-     BDB, HDB, and/or LDBM support.
+     BDB or HDB support.
 
         % make test
 
index 8343d6cc002e9d33d0ff70ee321b405faaede66b..47dfca4bfaba555f4c9e78102c28b17f97c7a454 100644 (file)
@@ -1587,12 +1587,12 @@ dnl                     [ol_cv_pthread_lpthread_lexc])
                        fi
 
                        ol_replace_broken_yield=no
-                       case "$target" in
-                       *-*-linux*) 
-                               AC_CHECK_FUNCS(nanosleep)
-                               ol_replace_broken_yield=yes
-                       ;;
-                       esac
+dnl                    case "$target" in
+dnl                    *-*-linux*) 
+dnl                            AC_CHECK_FUNCS(nanosleep)
+dnl                            ol_replace_broken_yield=yes
+dnl                    ;;
+dnl                    esac
 
                        if test $ol_replace_broken_yield = yes ; then
                                AC_DEFINE([REPLACE_BROKEN_YIELD],1,
index 97e31ff3da31efa4147a43628599331d2360a6ef..56610870c0c17134148145bb2d3fa4c9115f4828 100644 (file)
@@ -56,7 +56,6 @@ Implement SASLprep (RFC 4013) for LDAP (draft-ietf-ldapbis-*)
 Implement additional matching rules (RFC 3698)
 Add dumpasn1 logging support
 Add tests to test suite
-Add jail(2) support
 Recode linked-list structs to use <ldap_queue.h> macros
 Convert utfconv.txt into man page(s).
 Update manual pages as needed.
index e93fc465b1d7afc77d20d2fa57003dc34a2bfa4c..389dd0a03c4e0f7c4f0b5b722cd9553511066996 100644 (file)
@@ -708,7 +708,7 @@ ldap_bv2dn_x( struct berval *bvin, LDAPDN *dn, unsigned flags, void *ctx )
        str = bv->bv_val;
        end = str + bv->bv_len;
 
-       Debug( LDAP_DEBUG_TRACE, "=> ldap_bv2dn(%s,%u)\n", str, flags, 0 );
+       Debug( LDAP_DEBUG_ARGS, "=> ldap_bv2dn(%s,%u)\n", str, flags, 0 );
 
        *dn = NULL;
 
@@ -890,8 +890,8 @@ return_result:;
                LDAP_FREEX( tmpDN, ctx );
        }
 
-       Debug( LDAP_DEBUG_TRACE, "<= ldap_bv2dn(%s)=%d %s\n", str, rc,
-                       ldap_err2string( rc ) );
+       Debug( LDAP_DEBUG_ARGS, "<= ldap_bv2dn(%s)=%d %s\n", str, rc,
+                       rc ? ldap_err2string( rc ) : "" );
        *dn = newDN;
        
        return( rc );
@@ -3001,7 +3001,7 @@ int ldap_dn2bv_x( LDAPDN dn, struct berval *bv, unsigned flags, void *ctx )
        bv->bv_len = 0;
        bv->bv_val = NULL;
 
-       Debug( LDAP_DEBUG_TRACE, "=> ldap_dn2bv(%u)\n", flags, 0, 0 );
+       Debug( LDAP_DEBUG_ARGS, "=> ldap_dn2bv(%u)\n", flags, 0, 0 );
 
        /* 
         * a null dn means an empty dn string 
@@ -3310,8 +3310,8 @@ int ldap_dn2bv_x( LDAPDN dn, struct berval *bv, unsigned flags, void *ctx )
                return LDAP_PARAM_ERROR;
        }
 
-       Debug( LDAP_DEBUG_TRACE, "<= ldap_dn2bv(%s)=%d %s\n",
-               bv->bv_val, rc, ldap_err2string( rc ) );
+       Debug( LDAP_DEBUG_ARGS, "<= ldap_dn2bv(%s)=%d %s\n",
+               bv->bv_val, rc, rc ? ldap_err2string( rc ) : "" );
 
 return_results:;
        return( rc );
index 97a7732fb96dcf72ac6675c5c1215cc6f9b05d98..1affb1c71444e6e94ed9c61818a31d5147ee6e9c 100644 (file)
@@ -169,7 +169,7 @@ get_modlist(
 {
        static char     buf[256];
        int             num;
-       LDAPMod         tmp;
+       LDAPMod         tmp = { 0 };
        LDAPMod         **result;
        struct berval   **bvals;
 
index 2d313f7396dc4172fd977c347cb296061beede08..355543cd3e186fe6f505920b1e3aa5379376454a 100644 (file)
@@ -379,14 +379,7 @@ ldap_pvt_thread_pool_destroy ( ldap_pvt_thread_pool_t *tpool, int run_pending )
                : LDAP_INT_THREAD_POOL_STOPPING;
 
        ldap_pvt_thread_cond_broadcast(&pool->ltp_cond);
-       ldap_pvt_thread_mutex_unlock(&pool->ltp_mutex);
-
-       do {
-               ldap_pvt_thread_yield();
-               ldap_pvt_thread_mutex_lock(&pool->ltp_mutex);
-               waiting = pool->ltp_open_count;
-               ldap_pvt_thread_mutex_unlock(&pool->ltp_mutex);
-       } while (waiting > 0);
+       ldap_pvt_thread_cond_wait(&pool->ltp_cond, &pool->ltp_mutex);
 
        while ((ctx = LDAP_STAILQ_FIRST(&pool->ltp_pending_list)) != NULL)
        {
@@ -461,6 +454,9 @@ ldap_int_thread_pool_wrapper (
                         * should be like this:
                         *   if (pool->ltp_open_count > 1 && pool->ltp_starting == 0)
                         *       check timer, leave thread (break;)
+                        *
+                        * Just use pthread_cond_timedwait if we want to
+                        * check idle time.
                         */
 
                        if (pool->ltp_state == LDAP_INT_THREAD_POOL_RUNNING
@@ -492,15 +488,6 @@ ldap_int_thread_pool_wrapper (
                        }
                        ldap_pvt_thread_cond_wait(&pool->ltp_cond, &pool->ltp_mutex);
                }
-               ldap_pvt_thread_mutex_unlock(&pool->ltp_mutex);
-
-               ldap_pvt_thread_yield();
-
-               /* if we use an idle timer, here's
-                * a good place to update it
-                */
-
-               ldap_pvt_thread_mutex_lock(&pool->ltp_mutex);
        }
 
        for ( i=0; i<MAXKEYS && ltc_key[i].ltk_key; i++ ) {
@@ -514,6 +501,11 @@ ldap_int_thread_pool_wrapper (
        thread_keys[keyslot].id = tid_zero;
 
        pool->ltp_open_count--;
+
+       /* let pool_destroy know we're all done */
+       if (pool->ltp_open_count < 1)
+               ldap_pvt_thread_cond_signal(&pool->ltp_cond);
+
        ldap_pvt_thread_mutex_unlock(&pool->ltp_mutex);
 
        ldap_pvt_thread_exit(NULL);