]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9338 syncrepl: Don't reuse existing connection on Refresh fallback
authorHoward Chu <hyc@openldap.org>
Fri, 4 Sep 2020 12:39:00 +0000 (13:39 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 4 Sep 2020 20:52:26 +0000 (20:52 +0000)
servers/slapd/syncrepl.c

index 9ea7b55a793c8d3ba0f57b2ade4c795384ce590d..ca9326837ee1923d81b74768f21a113a65c0d29b 100644 (file)
@@ -1548,7 +1548,8 @@ done:
 
        if ( msg ) ldap_msgfree( msg );
 
-       if ( rc && rc != LDAP_SYNC_REFRESH_REQUIRED && si->si_ld ) {
+       if ( rc ) {
+               /* never reuse existing connection */
                if ( si->si_conn ) {
                        connection_client_stop( si->si_conn );
                        si->si_conn = NULL;
@@ -1661,6 +1662,7 @@ do_syncrepl(
        if ( !si->si_schemachecking )
                op->o_no_schema_check = 1;
 
+reload:
        /* Establish session, do search */
        if ( !si->si_ld ) {
                si->si_refreshDelete = 0;
@@ -1678,7 +1680,6 @@ do_syncrepl(
                rc = do_syncrep1( op, si );
        }
 
-reload:
        /* Process results */
        if ( rc == LDAP_SUCCESS ) {
                ldap_get_option( si->si_ld, LDAP_OPT_DESC, &s );
@@ -1689,11 +1690,6 @@ reload:
                op->o_ndn = op->o_bd->be_rootndn;
                rc = do_syncrep2( op, si );
                if ( rc == LDAP_SYNC_REFRESH_REQUIRED ) {
-                       if ( BER_BVISNULL( &si->si_syncCookie.octet_str ))
-                               slap_compose_sync_cookie( NULL, &si->si_syncCookie.octet_str,
-                                       si->si_syncCookie.ctxcsn, si->si_syncCookie.rid,
-                                       si->si_syncCookie.sid );
-                       rc = ldap_sync_search( si, op->o_tmpmemctx );
                        goto reload;
                }