From 47be44124da7f6ad42bed03a24701ca07c00918d Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Wed, 12 Sep 2007 00:03:02 +0000
Subject: [PATCH] Make a couple of changes to help improve server performance:

---
 opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java |   92 ++++++++++++++++++++-------------------------
 1 files changed, 41 insertions(+), 51 deletions(-)

diff --git a/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java b/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java
index 1b85d79..d1c92ab 100644
--- a/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java
+++ b/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java
@@ -30,7 +30,6 @@
 
 import java.security.MessageDigest;
 import java.util.Arrays;
-import java.util.concurrent.locks.ReentrantLock;
 
 import org.opends.messages.Message;
 import org.opends.server.admin.std.server.SHA1PasswordStorageSchemeCfg;
@@ -83,7 +82,7 @@
   private MessageDigest messageDigest;
 
   // The lock used to provide threadsafe access to the message digest.
-  private ReentrantLock digestLock;
+  private Object digestLock;
 
 
 
@@ -123,7 +122,7 @@
       throw new InitializationException(message, e);
     }
 
-    digestLock = new ReentrantLock();
+    digestLock = new Object();
   }
 
 
@@ -148,27 +147,24 @@
   {
     byte[] digestBytes;
 
-    digestLock.lock();
-
-    try
+    synchronized (digestLock)
     {
-      digestBytes = messageDigest.digest(plaintext.value());
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
+      try
       {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        digestBytes = messageDigest.digest(plaintext.value());
       }
+      catch (Exception e)
+      {
+        if (debugEnabled())
+        {
+          TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        }
 
-      Message message = ERR_PWSCHEME_CANNOT_ENCODE_PASSWORD.get(
-          CLASS_NAME, getExceptionMessage(e));
-      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
-                                   message, e);
-    }
-    finally
-    {
-      digestLock.unlock();
+        Message message = ERR_PWSCHEME_CANNOT_ENCODE_PASSWORD.get(
+            CLASS_NAME, getExceptionMessage(e));
+        throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+                                     message, e);
+      }
     }
 
     return ByteStringFactory.create(Base64.encode(digestBytes));
@@ -190,27 +186,24 @@
 
     byte[] digestBytes;
 
-    digestLock.lock();
-
-    try
+    synchronized (digestLock)
     {
-      digestBytes = messageDigest.digest(plaintext.value());
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
+      try
       {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        digestBytes = messageDigest.digest(plaintext.value());
       }
+      catch (Exception e)
+      {
+        if (debugEnabled())
+        {
+          TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        }
 
-      Message message = ERR_PWSCHEME_CANNOT_ENCODE_PASSWORD.get(
-          CLASS_NAME, getExceptionMessage(e));
-      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
-                                   message, e);
-    }
-    finally
-    {
-      digestLock.unlock();
+        Message message = ERR_PWSCHEME_CANNOT_ENCODE_PASSWORD.get(
+            CLASS_NAME, getExceptionMessage(e));
+        throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+                                     message, e);
+      }
     }
 
     buffer.append(Base64.encode(digestBytes));
@@ -229,24 +222,21 @@
   {
     byte[] userPWDigestBytes;
 
-    digestLock.lock();
-
-    try
+    synchronized (digestLock)
     {
-      userPWDigestBytes = messageDigest.digest(plaintextPassword.value());
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
+      try
       {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        userPWDigestBytes = messageDigest.digest(plaintextPassword.value());
       }
+      catch (Exception e)
+      {
+        if (debugEnabled())
+        {
+          TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        }
 
-      return false;
-    }
-    finally
-    {
-      digestLock.unlock();
+        return false;
+      }
     }
 
     byte[] storedPWDigestBytes;

--
Gitblit v1.10.0