]> git.sur5r.net Git - openldap/commitdiff
ITS#5488 from Rein Tollevik: propagate syncrepl contextCSN to providers
authorHoward Chu <hyc@openldap.org>
Wed, 28 May 2008 02:46:35 +0000 (02:46 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 28 May 2008 02:46:35 +0000 (02:46 +0000)
servers/slapd/overlays/syncprov.c

index 7209b7d473fa0e40f684c9702059f58dfd9c6a79..21b44ef794b6eddfa314b14142f61a985751b129 100644 (file)
@@ -1596,6 +1596,17 @@ syncprov_op_response( Operation *op, SlapReply *rs )
                cbuf[0] = '\0';
                ldap_pvt_thread_rdwr_wlock( &si->si_csn_rwlock );
                slap_get_commit_csn( op, &maxcsn );
+               if ( BER_BVISNULL( &maxcsn ) && SLAP_GLUE_SUBORDINATE( op->o_bd )) {
+                       /* syncrepl queues the CSN values in the db where
+                        * it is configured , not where the changes are made.
+                        * So look for a value in the glue db if we didn't
+                        * find any in this db.
+                        */
+                       BackendDB *be = op->o_bd;
+                       op->o_bd = select_backend( &be->be_nsuffix[0], 1);
+                       slap_get_commit_csn( op, &maxcsn );
+                       op->o_bd = be;
+               }
                if ( !BER_BVISNULL( &maxcsn ) ) {
                        int i, sid;
                        strcpy( cbuf, maxcsn.bv_val );