]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/syncprov.c
ITS#8789 revert previous patch
[openldap] / servers / slapd / overlays / syncprov.c
index fbb06050ff0877962d979cf2430d3773a6467064..402182e249a174758d62a98f22fac84f9d4fe016 100644 (file)
@@ -1934,21 +1934,24 @@ syncprov_op_response( Operation *op, SlapReply *rs )
                }
 
                /* Don't do any processing for consumer contextCSN updates */
-               if ( op->o_dont_replicate ) {
-                       if ( op->o_tag == LDAP_REQ_MODIFY &&
-                               op->orm_modlist->sml_op == LDAP_MOD_REPLACE &&
-                               op->orm_modlist->sml_desc == slap_schema.si_ad_contextCSN ) {
+               if ( SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) &&
+                       op->o_tag == LDAP_REQ_MODIFY &&
+                       op->orm_modlist->sml_op == LDAP_MOD_REPLACE &&
+                       op->orm_modlist->sml_desc == slap_schema.si_ad_contextCSN ) {
                        /* Catch contextCSN updates from syncrepl. We have to look at
                         * all the attribute values, as there may be more than one csn
                         * that changed, and only one can be passed in the csn queue.
                         */
-                               csn_changed = syncprov_new_ctxcsn( opc, si, csn_changed,
-                                       op->orm_modlist->sml_numvals, op->orm_modlist->sml_values );
-                       } else {
-                               ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock );
-                       }
+                       csn_changed = syncprov_new_ctxcsn( opc, si, csn_changed,
+                               op->orm_modlist->sml_numvals, op->orm_modlist->sml_values );
+                       if ( csn_changed )
+                               si->si_numops++;
+                       goto leave;
+               }
+               if ( op->o_dont_replicate ) {
                        if ( csn_changed )
                                si->si_numops++;
+                       ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock );
                        goto leave;
                }