]> 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>
Mon, 13 Dec 2021 19:20:58 +0000 (19:20 +0000)
servers/slapd/overlays/syncprov.c

index e60884d7e063632ee1da4856420f860d01d81176..df223523743d1ac25593eba4c918c78242b1aaf1 100644 (file)
@@ -3231,8 +3231,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 );