]> git.sur5r.net Git - openldap/commitdiff
ITS#5376,ITS#5378
authorQuanah Gibson-Mount <quanah@openldap.org>
Wed, 16 Apr 2008 17:52:41 +0000 (17:52 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Wed, 16 Apr 2008 17:52:41 +0000 (17:52 +0000)
CHANGES
servers/slapd/syncrepl.c

diff --git a/CHANGES b/CHANGES
index af0d0538c7f4bc558c4953e603ee85842a93c9d4..2d699c781f093f2c460b3c7504b07a7cdbc82c26 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
 OpenLDAP 2.3 Change Log
 
 OpenLDAP 2.3.42 Engineering
+       Fixed slapd delta-syncrepl refresh mode (ITS#5376)
+       Fixed slapd delta-syncrepl resync (ITS#5378)
        Fixed slapd pagedresults stale state (ITS#5409)
        Fixed slapd-ldap connection handler (ITS#5404)
 
index aeeafdf549fadb2c06165eecbdf442ac6ecad365..0b9018bdedf921b2c6f412013cdaff87fdf77d27 100644 (file)
@@ -722,10 +722,17 @@ do_syncrep2(
                                        if (( rc = syncrepl_message_to_op( si, op, msg )) == LDAP_SUCCESS &&
                                                !BER_BVISNULL( &syncCookie.ctxcsn ) ) {
                                                syncrepl_updateCookie( si, op, psub, &syncCookie );
-                                       } else if ( rc == LDAP_NO_SUCH_OBJECT ) {
-                                               rc = LDAP_SYNC_REFRESH_REQUIRED;
-                                               si->si_logstate = SYNCLOG_FALLBACK;
-                                               ldap_abandon_ext( si->si_ld, si->si_msgid, NULL, NULL );
+                                       } else switch ( rc ) {
+                                               case LDAP_ALREADY_EXISTS:
+                                               case LDAP_NO_SUCH_OBJECT:
+                                               case LDAP_NO_SUCH_ATTRIBUTE:
+                                               case LDAP_TYPE_OR_VALUE_EXISTS:
+                                                       rc = LDAP_SYNC_REFRESH_REQUIRED;
+                                                       si->si_logstate = SYNCLOG_FALLBACK;
+                                                       ldap_abandon_ext( si->si_ld, si->si_msgid, NULL, NULL );
+                                                       break;
+                                               default:
+                                                       break;
                                        }
                                } else if (( rc = syncrepl_message_to_entry( si, op, msg,
                                        &modlist, &entry, syncstate )) == LDAP_SUCCESS ) {