From d9129436f8ea479694acf39fdf7ab4234b69a2e4 Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Tue, 02 Oct 2007 20:22:53 +0000
Subject: [PATCH] - [Issue 2406]  supportedControl in DSE does not display all the supported controls:   advertise Account Usable and GetEffectiveRights via supportedControl of RootDSE.   also fix criticality field recognition/process for GetEffectiveRights request control.

---
 opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java                                     |    1 +
 opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java |    5 +++++
 opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciHandler.java                      |    2 ++
 3 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciHandler.java b/opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciHandler.java
index b7fa1c6..0f25ce7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciHandler.java
@@ -201,6 +201,7 @@
     aciListenerMgr = new AciListenerManager(aciList, configurationDN);
     processGlobalAcis(configuration);
     processConfigAcis();
+    DirectoryServer.registerSupportedControl(OID_GET_EFFECTIVE_RIGHTS);
   }
 
 
@@ -212,6 +213,7 @@
   public void finalizeAccessControlHandler()
   {
     AciEffectiveRights.finalizeOnShutdown();
+    DirectoryServer.deregisterSupportedControl(OID_GET_EFFECTIVE_RIGHTS);
   }
 
 
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java b/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
index 07e6df6..3b16af3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -2793,6 +2793,7 @@
     supportedControls.add(OID_PASSWORD_POLICY_CONTROL);
     supportedControls.add(OID_REAL_ATTRS_ONLY);
     supportedControls.add(OID_VIRTUAL_ATTRS_ONLY);
+    supportedControls.add(OID_ACCOUNT_USABLE_CONTROL);
   }
 
 
diff --git a/opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java b/opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java
index 6ee6d0a..e0cf935 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java
@@ -649,6 +649,11 @@
         {
           setVirtualAttributesOnly(true);
         }
+        else if (oid.equals(OID_GET_EFFECTIVE_RIGHTS) &&
+          DirectoryServer.isSupportedControl(OID_GET_EFFECTIVE_RIGHTS))
+        {
+          // Do nothing here and let AciHandler deal with it.
+        }
 
         // NYI -- Add support for additional controls.
 

--
Gitblit v1.10.0