From 99480fcbcb68be6a357f6218668feab697e1a93d Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Tue, 07 Jul 2009 14:55:26 +0000
Subject: [PATCH] Fix for 4096 MonitorMsg is not compatible with replication version
---
opends/src/server/org/opends/server/replication/protocol/ReplServerStartMsg.java | 113 ++++++++++++++++++++++++--------------------------------
1 files changed, 49 insertions(+), 64 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/protocol/ReplServerStartMsg.java b/opends/src/server/org/opends/server/replication/protocol/ReplServerStartMsg.java
index 0201146..7127bd5 100644
--- a/opends/src/server/org/opends/server/replication/protocol/ReplServerStartMsg.java
+++ b/opends/src/server/org/opends/server/replication/protocol/ReplServerStartMsg.java
@@ -223,59 +223,70 @@
*/
@Override
public byte[] getBytes()
+ throws UnsupportedEncodingException
{
+ return getBytes(ProtocolVersion.getCurrentVersion());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public byte[] getBytes(short protocolVersion)
+ throws UnsupportedEncodingException
+ {
+ if (protocolVersion == ProtocolVersion.REPLICATION_PROTOCOL_V1)
+ return getBytes_V1();
+
/* The ReplServerStartMsg is stored in the form :
* <operation type><baseDn><serverId><serverURL><windowSize><sslEncryption>
* <degradedStatusThreshold><serverState>
*/
- try {
- byte[] byteDn = baseDn.getBytes("UTF-8");
- byte[] byteServerId = String.valueOf(serverId).getBytes("UTF-8");
- byte[] byteServerUrl = serverURL.getBytes("UTF-8");
- byte[] byteServerState = serverState.getBytes();
- byte[] byteWindowSize = String.valueOf(windowSize).getBytes("UTF-8");
- byte[] byteSSLEncryption =
- String.valueOf(sslEncryption).getBytes("UTF-8");
- byte[] byteDegradedStatusThreshold =
- String.valueOf(degradedStatusThreshold).getBytes("UTF-8");
- int length = byteDn.length + 1 + byteServerId.length + 1 +
- byteServerUrl.length + 1 + byteWindowSize.length + 1 +
- byteSSLEncryption.length + 1 +
- byteDegradedStatusThreshold.length + 1 +
- byteServerState.length + 1;
+ byte[] byteDn = baseDn.getBytes("UTF-8");
+ byte[] byteServerId = String.valueOf(serverId).getBytes("UTF-8");
+ byte[] byteServerUrl = serverURL.getBytes("UTF-8");
+ byte[] byteServerState = serverState.getBytes();
+ byte[] byteWindowSize = String.valueOf(windowSize).getBytes("UTF-8");
+ byte[] byteSSLEncryption =
+ String.valueOf(sslEncryption).getBytes("UTF-8");
+ byte[] byteDegradedStatusThreshold =
+ String.valueOf(degradedStatusThreshold).getBytes("UTF-8");
- /* encode the header in a byte[] large enough to also contain the mods */
- byte resultByteArray[] = encodeHeader(MSG_TYPE_REPL_SERVER_START, length);
- int pos = headerLength;
+ int length = byteDn.length + 1 + byteServerId.length + 1 +
+ byteServerUrl.length + 1 + byteWindowSize.length + 1 +
+ byteSSLEncryption.length + 1 +
+ byteDegradedStatusThreshold.length + 1 +
+ byteServerState.length + 1;
- /* put the baseDN and a terminating 0 */
- pos = addByteArray(byteDn, resultByteArray, pos);
+ /* encode the header in a byte[] large enough to also contain the mods */
+ byte resultByteArray[] =
+ encodeHeader(MSG_TYPE_REPL_SERVER_START, length, protocolVersion);
- /* put the ServerId */
- pos = addByteArray(byteServerId, resultByteArray, pos);
+ int pos = headerLength;
- /* put the ServerURL */
- pos = addByteArray(byteServerUrl, resultByteArray, pos);
+ /* put the baseDN and a terminating 0 */
+ pos = addByteArray(byteDn, resultByteArray, pos);
- /* put the window size */
- pos = addByteArray(byteWindowSize, resultByteArray, pos);
+ /* put the ServerId */
+ pos = addByteArray(byteServerId, resultByteArray, pos);
- /* put the SSL Encryption setting */
- pos = addByteArray(byteSSLEncryption, resultByteArray, pos);
+ /* put the ServerURL */
+ pos = addByteArray(byteServerUrl, resultByteArray, pos);
- /* put the degraded status threshold */
- pos = addByteArray(byteDegradedStatusThreshold, resultByteArray, pos);
+ /* put the window size */
+ pos = addByteArray(byteWindowSize, resultByteArray, pos);
- /* put the ServerState */
- pos = addByteArray(byteServerState, resultByteArray, pos);
+ /* put the SSL Encryption setting */
+ pos = addByteArray(byteSSLEncryption, resultByteArray, pos);
- return resultByteArray;
- }
- catch (UnsupportedEncodingException e)
- {
- return null;
- }
+ /* put the degraded status threshold */
+ pos = addByteArray(byteDegradedStatusThreshold, resultByteArray, pos);
+
+ /* put the ServerState */
+ pos = addByteArray(byteServerState, resultByteArray, pos);
+
+ return resultByteArray;
}
/**
@@ -338,32 +349,6 @@
}
/**
- * {@inheritDoc}
- */
- @Override
- public byte[] getBytes(short reqProtocolVersion)
- throws UnsupportedEncodingException
- {
- // Of course, always support current protocol version
- if (reqProtocolVersion == ProtocolVersion.getCurrentVersion())
- {
- return getBytes();
- }
-
- // Supported older protocol versions
- switch (reqProtocolVersion)
- {
- case ProtocolVersion.REPLICATION_PROTOCOL_V1:
- return getBytes_V1();
- default:
- // Unsupported requested version
- throw new UnsupportedEncodingException(getClass().getSimpleName() +
- " PDU does not support requested protocol version serialization: " +
- reqProtocolVersion);
- }
- }
-
- /**
* Get the byte array representation of this Message. This uses the version
* 1 of the replication protocol (used for compatibility purpose).
*
--
Gitblit v1.10.0