]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9345 syncrepl: call check_syncprov on freshly started consumer
authorHoward Chu <hyc@openldap.org>
Sat, 12 Sep 2020 20:38:20 +0000 (21:38 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Wed, 16 Sep 2020 16:35:28 +0000 (16:35 +0000)
servers/slapd/syncrepl.c

index 3040858adf5197bfa19cc88c6d0ee74296540a41..ba37f1e5813755a0e02206827f3339a32740eeff 100644 (file)
@@ -851,22 +851,19 @@ do_syncrep1(
                        }
                        ldap_pvt_thread_mutex_unlock( &si->si_cookieState->cs_mutex );
                }
+               }
 
-               ch_free( si->si_syncCookie.octet_str.bv_val );
-               slap_compose_sync_cookie( NULL, &si->si_syncCookie.octet_str,
-                       si->si_syncCookie.ctxcsn, si->si_syncCookie.rid,
-                       si->si_syncCookie.sid );
-       } else {
-               /* ITS#6367: recreate the cookie so it has our SID, not our peer's */
-               ch_free( si->si_syncCookie.octet_str.bv_val );
-               BER_BVZERO( &si->si_syncCookie.octet_str );
-               /* Look for contextCSN from syncprov overlay. */
-               check_syncprov( op, si );
-               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 );
-       }
+               if ( !cmdline_cookie_found ) {
+                       /* ITS#6367: recreate the cookie so it has our SID, not our peer's */
+                       ch_free( si->si_syncCookie.octet_str.bv_val );
+                       BER_BVZERO( &si->si_syncCookie.octet_str );
+                       /* Look for contextCSN from syncprov overlay. */
+                       check_syncprov( op, si );
+                       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 );
+               }
 
        si->si_refreshDone = 0;
        Debug( LDAP_DEBUG_SYNC, "do_syncrep1: %s starting refresh (sending cookie=%s)\n",