From 94d1f5f1d5d1403d5cb56abf266fabbfa90cdacc Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Fri, 17 Apr 2009 14:55:44 +0000
Subject: [PATCH] - [Issue 2725] prevent completed tasks from causing exceptions if task class is disallowed after it has completed.

---
 opends/src/server/org/opends/server/backends/task/TaskScheduler.java |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/opends/src/server/org/opends/server/backends/task/TaskScheduler.java b/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
index 58267e5..e4a5a46 100644
--- a/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
+++ b/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
@@ -2010,14 +2010,8 @@
       throw new DirectoryException(ResultCode.OBJECTCLASS_VIOLATION, message);
     }
 
-    String taskClassName = value.getValue().toString();
-    if (! DirectoryServer.getAllowedTasks().contains(taskClassName))
-    {
-      Message message = ERR_TASKSCHED_NOT_ALLOWED_TASK.get(taskClassName);
-      throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
-    }
-
     // Try to load the specified class.
+    String taskClassName = value.getValue().toString();
     Class<?> taskClass;
     try
     {
@@ -2081,6 +2075,13 @@
                                    message);
     }
 
+    if (!TaskState.isDone(task.getTaskState()) &&
+        !DirectoryServer.getAllowedTasks().contains(taskClassName))
+    {
+      Message message = ERR_TASKSCHED_NOT_ALLOWED_TASK.get(taskClassName);
+      throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
+    }
+
     task.setOperation(operation);
 
     // Avoid task specific initialization for completed tasks.

--
Gitblit v1.10.0