]> git.sur5r.net Git - openldap/commitdiff
ITS#5597 fix CSN compare when provider has CSNs with other sids.
authorRein Tollevik <rein@openldap.org>
Sun, 6 Jul 2008 14:15:42 +0000 (14:15 +0000)
committerRein Tollevik <rein@openldap.org>
Sun, 6 Jul 2008 14:15:42 +0000 (14:15 +0000)
servers/slapd/syncrepl.c

index fd8847727c0a09a3571d82ec7b7505f8be0cff68..a3164aeb36ba6886876d6c0c1f2d97e270f7f694 100644 (file)
@@ -689,8 +689,8 @@ compare_csns( struct sync_cookie *sc1, struct sync_cookie *sc2, int *which )
                return -1;
        }
 
-       for (i=0; i<sc1->numcsns; i++) {
-               for (j=0; j<sc2->numcsns; j++) {
+       for (j=0; j<sc2->numcsns; j++) {
+               for (i=0; i<sc1->numcsns; i++) {
                        if ( sc1->sids[i] != sc2->sids[j] )
                                continue;
                        value_match( &match, slap_schema.si_ad_entryCSN,
@@ -703,6 +703,11 @@ compare_csns( struct sync_cookie *sc1, struct sync_cookie *sc2, int *which )
                        }
                        break;
                }
+               if ( i == sc1->numcsns ) {
+                       /* sc2 has a sid sc1 lacks */
+                       *which = j;
+                       return -1;
+               }
        }
        return match;
 }