From 9b3d689c46eadcb288b8e751c866b0f630130409 Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Thu, 15 Nov 2007 16:50:07 +0000
Subject: [PATCH] Fix #2424 impact of generation ID on binary copy - an LDAP server that has already sent changes must not be able to replicate with an empty replication server

---
 opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java |   20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java
index 41fcfae..15de178 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerHandler.java
@@ -359,7 +359,25 @@
         }
         else
         {
-          replicationCache.setGenerationId(generationId, false);
+          // We are an empty Replicationserver
+          if ((generationId>0)&&(!serverState.isEmpty()))
+          {
+            // If the LDAP server has already sent changes
+            // it is not expected to connect to an empty RS
+            Message message = NOTE_BAD_GENERATION_ID.get(
+                receivedMsg.getBaseDn().toNormalizedString(),
+                Short.toString(receivedMsg.getServerId()),
+                Long.toString(generationId),
+                Long.toString(localGenerationId));
+
+            ErrorMessage errorMsg =
+              new ErrorMessage(replicationServerId, serverId, message);
+            session.publish(errorMsg);
+          }
+          else
+          {
+            replicationCache.setGenerationId(generationId, false);
+          }
         }
       }
       else if (msg instanceof ReplServerStartMessage)

--
Gitblit v1.10.0