]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9742 Reject a refresh if we can't do a precise resync
authorOndřej Kuzník <ondra@mistotebe.net>
Wed, 10 Nov 2021 12:20:27 +0000 (12:20 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Tue, 14 Dec 2021 16:50:11 +0000 (16:50 +0000)
servers/slapd/overlays/syncprov.c

index 59d5e76746464880e2c01ba7fa09cc125b84e8ac..23a070aef668a932a84e971cdfcf930b4e73d704 100644 (file)
@@ -3234,8 +3234,15 @@ syncprov_op_search( Operation *op, SlapReply *rs )
                if (srs->sr_state.numcsns != numcsns) {
                        /* consumer doesn't have the right number of CSNs */
                        Debug( LDAP_DEBUG_SYNC, "%s syncprov_op_search: "
-                               "consumer cookie is missing a csn we track\n",
-                               op->o_log_prefix );
+                               "consumer cookie is missing a csn we track%s\n",
+                               op->o_log_prefix, si->si_nopres ? ", rejecting" : "" );
+
+                       if ( si->si_nopres ) {
+                               rs->sr_err = LDAP_SYNC_REFRESH_REQUIRED;
+                               rs->sr_text = "not enough information to resync, please use other means";
+                               goto bailout;
+                       }
+
                        changed = SS_CHANGED;
                        if ( srs->sr_state.ctxcsn ) {
                                ber_bvarray_free_x( srs->sr_state.ctxcsn, op->o_tmpmemctx );