From 6781e3b79f4ff822aeb68d4d3a3dcd8b49ad86f9 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:

---
 opendj-sdk/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java |   45 +++++++++------------------------------------
 1 files changed, 9 insertions(+), 36 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
index bb42dab..f31ad80 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
@@ -25,7 +25,6 @@
  *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
  */
 package org.opends.server.extensions;
-import org.opends.messages.Message;
 
 
 
@@ -39,8 +38,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
 
+import org.opends.messages.Message;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.DigestMD5SASLMechanismHandlerCfg;
 import org.opends.server.admin.std.server.SASLMechanismHandlerCfg;
@@ -52,29 +51,26 @@
 import org.opends.server.core.BindOperation;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.PasswordPolicyState;
+import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.types.AuthenticationInfo;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
-
-
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.LockManager;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.ResultCode;
 import org.opends.server.util.Base64;
 
-import org.opends.server.types.DebugLogLevel;
+import static org.opends.messages.ExtensionMessages.*;
 import static org.opends.server.loggers.ErrorLogger.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.loggers.debug.DebugTracer;
-import static org.opends.messages.ExtensionMessages.*;
-
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
@@ -117,7 +113,7 @@
 
   // The lock that will be used to provide threadsafe access to the message
   // digest.
-  private ReentrantLock digestLock;
+  private Object digestLock;
 
   // The random number generator that we will use to create the nonce.
   private SecureRandom randomGenerator;
@@ -151,7 +147,7 @@
 
 
     // Initialize the variables needed for the MD5 digest creation.
-    digestLock      = new ReentrantLock();
+    digestLock      = new Object();
     randomGenerator = new SecureRandom();
 
     try
@@ -1163,18 +1159,7 @@
   private String generateNonce()
   {
     byte[] nonceBytes = new byte[16];
-
-    digestLock.lock();
-
-    try
-    {
-      randomGenerator.nextBytes(nonceBytes);
-    }
-    finally
-    {
-      digestLock.unlock();
-    }
-
+    randomGenerator.nextBytes(nonceBytes);
     return Base64.encode(nonceBytes);
   }
 
@@ -1359,9 +1344,7 @@
                                        String qop, String charset)
          throws UnsupportedEncodingException
   {
-    digestLock.lock();
-
-    try
+    synchronized (digestLock)
     {
       // First, get a hash of "username:realm:password".
       StringBuilder a1String1 = new StringBuilder();
@@ -1423,10 +1406,6 @@
       kdString.append(a2HashHex);
       return md5Digest.digest(kdString.toString().getBytes(charset));
     }
-    finally
-    {
-      digestLock.unlock();
-    }
   }
 
 
@@ -1465,9 +1444,7 @@
                                            String qop, String charset)
          throws UnsupportedEncodingException
   {
-    digestLock.lock();
-
-    try
+    synchronized (digestLock)
     {
       // First, get a hash of "username:realm:password".
       StringBuilder a1String1 = new StringBuilder();
@@ -1534,10 +1511,6 @@
       kdString.append(a2HashHex);
       return md5Digest.digest(kdString.toString().getBytes(charset));
     }
-    finally
-    {
-      digestLock.unlock();
-    }
   }
 
 

--
Gitblit v1.10.0