]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldap/bind.c
rewrite chased DN according to referral's (ITS#4776)
[openldap] / servers / slapd / back-ldap / bind.c
index 92018cf82370fb4a0af707cc9c689d0c765b7472..55151b8be8e47b5d1a95ef1644cb0f26041c8435 100644 (file)
@@ -32,6 +32,8 @@
 #define AVL_INTERNAL
 #include "slap.h"
 #include "back-ldap.h"
+#undef ldap_debug      /* silence a warning in ldap-int.h */
+#include "../../../libraries/libldap/ldap-int.h"
 
 #include "lutil_ldap.h"
 
@@ -1204,6 +1206,8 @@ retry:;
 
                /* FIXME: one binding-- too many? */
                lc->lc_binding--;
+               assert( lc->lc_refcnt == 1 );
+               lc->lc_refcnt = 0;
                ldap_back_freeconn( op, lc, dolock );
                *lcp = NULL;
                rs->sr_err = slap_map_api2result( rs );
@@ -1342,7 +1346,7 @@ ldap_back_cancel(
        }
 
        if ( LDAP_BACK_IGNORE( li ) ) {
-               return LDAP_SUCCESS;
+               return ldap_pvt_discard( lc->lc_ld, msgid );
        }
 
        if ( LDAP_BACK_CANCEL( li ) ) {
@@ -1462,7 +1466,7 @@ retry:;
                 * LDAP_COMPARE_{TRUE|FALSE}) */
                default:
                        /* only touch when activity actually took place... */
-                       if ( li->li_idle_timeout && lc ) {
+                       if ( li->li_idle_timeout ) {
                                lc->lc_time = op->o_time;
                        }