]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/syncprov.c
ITS#5973 re-enable patch
[openldap] / servers / slapd / overlays / syncprov.c
index e4a853f698323922a3ecfb6ec59c74395996567f..2fb23d3c3cdb2337570503525751575163908da2 100644 (file)
@@ -1644,7 +1644,6 @@ syncprov_op_response( Operation *op, SlapReply *rs )
                maxcsn.bv_len = sizeof(cbuf);
                ldap_pvt_thread_rdwr_wlock( &si->si_csn_rwlock );
 
-#if 0
                if ( op->o_dont_replicate &&
                                op->orm_modlist->sml_op == LDAP_MOD_REPLACE &&
                                op->orm_modlist->sml_desc == slap_schema.si_ad_contextCSN ) {
@@ -1694,7 +1693,6 @@ syncprov_op_response( Operation *op, SlapReply *rs )
                        }
                        return SLAP_CB_CONTINUE;
                }
-#endif
 
                slap_get_commit_csn( op, &maxcsn, &foundit );
                if ( BER_BVISEMPTY( &maxcsn ) && SLAP_GLUE_SUBORDINATE( op->o_bd )) {
@@ -2388,6 +2386,16 @@ syncprov_op_search( Operation *op, SlapReply *rs )
                                                changed = SS_CHANGED;
                                        else if ( newer > 0 ) {
                                        /* our state is older, tell consumer nothing */
+                                               if ( sop ) {
+                                                       syncops **sp = &si->si_ops;
+                                                       
+                                                       ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
+                                                       while ( *sp != sop )
+                                                               sp = &(*sp)->s_next;
+                                                       *sp = sop->s_next;
+                                                       ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
+                                                       ch_free( sop );
+                                               }
                                                rs->sr_err = LDAP_SUCCESS;
                                                rs->sr_ctrls = NULL;
                                                send_ldap_result( op, rs );