From 8fe39485d77a14b6e2a3f3d63a63bba6a0be645a Mon Sep 17 00:00:00 2001
From: floblanc <floblanc@localhost>
Date: Mon, 23 Feb 2009 19:55:50 +0000
Subject: [PATCH] Fix issue 3817 Creating a 2nd workflow with cn=config baseDn can break the configuration

---
 opends/src/server/org/opends/server/core/networkgroups/NetworkGroup.java |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/networkgroups/NetworkGroup.java b/opends/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
index 070f764..f6aa131 100644
--- a/opends/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
+++ b/opends/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
@@ -1246,8 +1246,11 @@
     {
       // Search the highest workflow in the topology that can handle
       // the baseDN.
+      //First search the private workflows
+      // The order is important to ensure that the admin network group
+      // is not broken and can always find cn=config
       for (WorkflowTopologyNode curWorkflow : namingContexts
-          .getNamingContexts())
+          .getPrivateNamingContexts())
       {
         workflowCandidate = curWorkflow.getWorkflowCandidate(baseDN);
         if (workflowCandidate != null)
@@ -1255,6 +1258,19 @@
           break;
         }
       }
+      // If not found, search the public
+      if (workflowCandidate == null) {
+        for (WorkflowTopologyNode curWorkflow : namingContexts
+            .getPublicNamingContexts())
+        {
+          workflowCandidate = curWorkflow.getWorkflowCandidate(baseDN);
+          if (workflowCandidate != null)
+          {
+            break;
+          }
+        }
+      }
+
     }
 
     return workflowCandidate;

--
Gitblit v1.10.0