]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldap/bind.c
fix leak in case of retry
[openldap] / servers / slapd / back-ldap / bind.c
index 2f62b40c99caccfe9627080be1cc4162bc88a2f0..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 ) ) {