[Fedora-directory-commits] ldapserver/ldap/servers/slapd/test-plugins sampletask.c, NONE, 1.1 README, 1.7, 1.8
by Doctor Conrad
Author: nhosoi
Update of /cvs/dirsec/ldapserver/ldap/servers/slapd/test-plugins
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv8161
Modified Files:
README
Added Files:
sampletask.c
Log Message:
Resolves: #195305
Summary: make new_task() non-static
Adding a sample task plugin code and updating the README for the plugin.
--- NEW FILE sampletask.c ---
/** BEGIN COPYRIGHT BLOCK
* This Program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; version 2 of the License.
*
* This Program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place, Suite 330, Boston, MA 02111-1307 USA.
*
* In addition, as a special exception, Red Hat, Inc. gives You the additional
* right to link the code of this Program with code not covered under the GNU
* General Public License ("Non-GPL Code") and to distribute linked combinations
* including the two, subject to the limitations in this paragraph. Non-GPL Code
* permitted under this exception must only link to the code of this Program
* through those well defined interfaces identified in the file named EXCEPTION
* found in the source code files (the "Approved Interfaces"). The files of
* Non-GPL Code may instantiate templates or use macros or inline functions from
* the Approved Interfaces without causing the resulting work to be covered by
* the GNU General Public License. Only Red Hat, Inc. may make changes or
* additions to the list of Approved Interfaces. You must obey the GNU General
* Public License in all respects for all of the Program code and other code used
* in conjunction with the Program except the Non-GPL Code covered by this
* exception. If you modify this file, you may extend this exception to your
* version of the file, but you are not obligated to do so. If you do not wish to
* provide this exception without modification, you must delete this exception
* statement from your version and license this file solely under the GPL without
* exception.
*
* Copyright (C) 2006 Red Hat, Inc.
* All rights reserved.
* END COPYRIGHT BLOCK **/
/*
* sample task plugin
*
* [How to set up the plugin for testing]
* 1. compile and package with the other plugins
* 2. put the plugin libsampletask-plugin.so at <prefix>/usr/lib/<brand>-ds/plugins
* 3. register it as a plugin in dse.ldif
* Plugin entry:
* dn: cn=sampletask,cn=plugins,cn=config
* objectClass: top
* objectClass: nsSlapdPlugin
* objectClass: extensibleObject
* cn: sampletask
* nsslapd-pluginPath: <prefix>/usr/lib/<brand>-ds/plugins/libsampletask-plugin.so
* nsslapd-pluginInitfunc: sampletask_init
* nsslapd-pluginType: object
* nsslapd-pluginEnabled: on
* nsslapd-pluginId: sampletask
* nsslapd-pluginVersion: <plugin_version>
* nsslapd-pluginVendor: <vendor name>
* nsslapd-pluginDescription: Sample task plugin
*
* 4. create a config task entry in dse.ldif
* Task entry:
* dn: cn=sample task, cn=tasks, cn=config
* objectClass: top
* objectClass: extensibleObject
* cn: sample task
*
* 5. to invoke the sample task, run the command line:
* $ ./ldapmodify -h <host> -p <port> -D "cn=Directory Manager" -w <pw> -a
* dn: cn=sample task 0, cn=sample task, cn=tasks, cn=config
* objectClass: top
* objectClass: extensibleObject
* cn: sample task 0
* arg0: sample task arg0
*
* Result is in the errors log
* [...] - Sample task starts (arg: sample task arg0) ...
* [...] - Sample task finished.
*/
#include "slap.h"
#include "slapi-private.h"
static int task_sampletask_add(Slapi_PBlock *pb, Slapi_Entry *e,
Slapi_Entry *eAfter, int *returncode, char *returntext,
void *arg);
static int task_sampletask_start(Slapi_PBlock *pb);
/*
* Init function
* Specified in the plugin entry as "nsslapd-pluginInitfunc: sampletask_init"
*/
int
sampletask_init( Slapi_PBlock *pb )
{
int rc = 0;
rc = slapi_pblock_set( pb, SLAPI_PLUGIN_VERSION,
(void *) SLAPI_PLUGIN_VERSION_03 );
rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_START_FN,
(void *) task_sampletask_start );
return rc;
}
/*
* Task start function
* Register the function task_sampletask_add, which invokes the task on demand.
*/
static int
task_sampletask_start(Slapi_PBlock *pb)
{
int rc = slapi_task_register_handler("sample task", task_sampletask_add);
return rc;
}
/*
* Task thread
* Not necessary be a thread, but it'd not disturb the server's other jobs.
*/
static void
task_sampletask_thread(void *arg)
{
Slapi_PBlock *pb = (Slapi_PBlock *)arg;
Slapi_Task *task = pb->pb_task;
int rv;
task->task_work = 1;
task->task_progress = 0;
task->task_state = SLAPI_TASK_RUNNING;
slapi_task_status_changed(task);
slapi_task_log_notice(task, "Sample task starts (arg: %s) ...\n",
pb->pb_seq_val);
LDAPDebug(LDAP_DEBUG_ANY, "Sample task starts (arg: %s) ...\n",
pb->pb_seq_val, 0, 0);
/* do real work */
rv = 0;
slapi_task_log_notice(task, "Sample task finished.");
slapi_task_log_status(task, "Sample task finished.");
LDAPDebug(LDAP_DEBUG_ANY, "Sample task finished.\n", 0, 0, 0);
task->task_progress = 1;
task->task_exitcode = rv;
task->task_state = SLAPI_TASK_FINISHED;
slapi_task_status_changed(task);
slapi_ch_free((void **)&pb->pb_seq_val);
slapi_pblock_destroy(pb);
}
/* extract a single value from the entry (as a string) -- if it's not in the
* entry, the default will be returned (which can be NULL).
* you do not need to free anything returned by this.
*/
static const char *fetch_attr(Slapi_Entry *e, const char *attrname,
const char *default_val)
{
Slapi_Attr *attr;
Slapi_Value *val = NULL;
if (slapi_entry_attr_find(e, attrname, &attr) != 0)
return default_val;
slapi_attr_first_value(attr, &val);
return slapi_value_get_string(val);
}
/*
* Invoked when the task instance is added by the client (step 5 of the comment)
* Get the necessary attributes from the task entry, and spawns a thread to do
* the task.
*/
static int
task_sampletask_add(Slapi_PBlock *pb, Slapi_Entry *e,
Slapi_Entry *eAfter, int *returncode, char *returntext,
void *arg)
{
PRThread *thread = NULL;
const char *cn;
int rv = SLAPI_DSE_CALLBACK_OK;
Slapi_PBlock *mypb = NULL;
Slapi_Task *task = NULL;
const char *arg0;
*returncode = LDAP_SUCCESS;
if ((cn = fetch_attr(e, "cn", NULL)) == NULL) {
*returncode = LDAP_OBJECT_CLASS_VIOLATION;
rv = SLAPI_DSE_CALLBACK_ERROR;
goto out;
}
/* get arg(s) */
if ((arg0 = fetch_attr(e, "arg0", NULL)) == NULL) {
*returncode = LDAP_OBJECT_CLASS_VIOLATION;
rv = SLAPI_DSE_CALLBACK_ERROR;
goto out;
}
/* allocate new task now */
task = slapi_new_task(slapi_entry_get_ndn(e));
if (task == NULL) {
LDAPDebug(LDAP_DEBUG_ANY, "unable to allocate new task!\n", 0, 0, 0);
*returncode = LDAP_OPERATIONS_ERROR;
rv = SLAPI_DSE_CALLBACK_ERROR;
goto out;
}
task->task_state = SLAPI_TASK_SETUP;
task->task_work = 1;
task->task_progress = 0;
/* create a pblock to pass the necessary info to the task thread */
mypb = slapi_pblock_new();
if (mypb == NULL) {
*returncode = LDAP_OPERATIONS_ERROR;
rv = SLAPI_DSE_CALLBACK_ERROR;
goto out;
}
mypb->pb_seq_val = slapi_ch_strdup(arg0);
mypb->pb_task = task;
mypb->pb_task_flags = TASK_RUNNING_AS_TASK;
/* start the sample task as a separate thread */
thread = PR_CreateThread(PR_USER_THREAD, task_sampletask_thread,
(void *)mypb, PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD,
PR_UNJOINABLE_THREAD, SLAPD_DEFAULT_THREAD_STACKSIZE);
if (thread == NULL) {
LDAPDebug(LDAP_DEBUG_ANY,
"unable to create sample task thread!\n", 0, 0, 0);
*returncode = LDAP_OPERATIONS_ERROR;
rv = SLAPI_DSE_CALLBACK_ERROR;
slapi_ch_free((void **)&mypb->pb_seq_val);
slapi_pblock_destroy(mypb);
goto out;
}
/* thread successful -- don't free the pb, let the thread do that. */
return SLAPI_DSE_CALLBACK_OK;
out:
if (task) {
slapi_destroy_task(task);
}
return rv;
}
Index: README
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/test-plugins/README,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- README 29 Oct 2005 02:28:18 -0000 1.7
+++ README 15 Dec 2006 00:22:54 -0000 1.8
@@ -87,6 +87,12 @@
This is an example of a pre-operation plug-in function that
implements a SASL mechanism.
+sampletask.c
+------------
+This is an example of task plug-in that implements a task which is
+invoked by adding the corresponding task entry.
+
+
clients
-------
This directory contains the C and Java source code for clients
@@ -109,7 +115,7 @@
1. Include the Plug-In API. For example:
- #include "[serverRoot]/plugins/slapd/slapi/include/slapi-plugin.h"
+ #include "slapi-plugin.h"
2. Write your plug-in, including a top level initialization function
used by the server to start the plug-in. For example:
@@ -133,14 +139,47 @@
} /* my_plugin_init() */
- See the Parameter Block Reference in the Netscape Directory Server
+ See the Parameter Block Reference in the Red Hat Directory Server
Plug-In Programmer's Guide for hints on plug-in types.
3. Build the plug-in as a library.
- We recommend you copy and adapt the Makefile in
- [serverRoot]/plugins/slapd/slapi/examples.
-
+ We recommend to use the Directory Server's build scheme.
+ 3.1 Add your plugin to Makefile.am
+ Index: Makefile.am
+ ===================================================================
+ RCS file: /cvs/dirsec/ldapserver/Makefile.am,v
+ retrieving revision 1.14
+ diff -t -w -U2 -r1.14 Makefile.am
+ --- Makefile.am 16 Nov 2006 18:56:03 -0000 1.14
+ +++ Makefile.am 14 Dec 2006 23:51:30 -0000
+ @@ -74,5 +74,5 @@
+
+ serverplugin_LTLIBRARIES = libacl-plugin.la libattr-unique-plugin.la libchainingdb-plugin.la \
+ - libcos-plugin.la libdes-plugin.la libdistrib-plugin.la \
+ + libsampletask-plugin.la libcos-plugin.la libdes-plugin.la libdistrib-plugin.la \
+ libhttp-client-plugin.la libcollation-plugin.la libpam-passthru-plugin.la \
+ libpassthru-plugin.la libpresence-plugin.la libpwdstorage-plugin.la \
+ @@ -540,4 +540,11 @@
+
+ #------------------------
+ +# libsampletask-plugin
+ +#------------------------
+ +libsampletask_plugin_la_SOURCES = ldap/servers/slapd/test-plugins/sampletask.c
+ +
+ +libsampletask_plugin_la_CPPFLAGS = $(PLUGIN_CPPFLAGS)
+ +
+ +#------------------------
+ # libdes-plugin
+ #-----------------------
+
+ 3.2 run autotool commands/configure
+ $ cd <src_root>/ldapserver
+ $ autogen.sh # make sure there is no errors / warnings
+ $ mkdir testbuild
+ $ cd testbuild
+ $ ../configure --with-fhs [ --prefix=/opt/fedora-ds ... ]
+ $ make install
Plugging the Library Into the Server
------------------------------------
@@ -149,17 +188,17 @@
1. Stop the server.
Console: Select the server; Object > Stop Server
- Command Line: cd [serverRoot]/slapd-[serverID] ; ./stop-slapd
+ Command Line: cd [prefix]/usr/lib/<brand>-ds/slapd-[serverID] ; ./stop-slapd
2. Add the entry for the server plug-in to
- [serverRoot]/slapd-[serverID]/config/dse.ldif. For example:
+ [prefix]/var/lib/slapd-[serverID]/dse.ldif. For example:
dn: cn=[My Server Plugin],cn=plugins,cn=config
objectClass: top
objectClass: nsSlapdPlugin
objectClass: extensibleObject
cn: [My Server Plugin]
- nsslapd-pluginPath: [[serverRoot]/myPlugins/myveryown-plugin.so]
+ nsslapd-pluginPath: [[prefix]/usr/lib/<brand>-ds/plugins/myveryown-plugin.so]
nsslapd-pluginInitfunc: [my_plugin_init]
nsslapd-pluginType: [myPluginType]
nsslapd-pluginEnabled: on
@@ -172,10 +211,10 @@
nsslapd-pluginVendor: [Fictional Software Company Incorporated]
nsslapd-pluginDescription: [Add lots of cool functionality]
- See the Parameter Block Reference in the Netscape Directory Server
+ See the Parameter Block Reference in the Red Hat Directory Server
Plug-In Programmer's Guide for hints on plug-in types.
3. Restart the server.
Console: Object > Start Server
- Command Line: cd [serverRoot]/slapd-[serverID] ; ./restart-slapd
+ Command Line: cd [prefix]/usr/lib/<brand>-ds/slapd-[serverID] ; ./restart-slapd
17 years, 3 months
[Fedora-directory-commits] ldapserver/ldap/servers/slapd slapi-private.h, 1.14, 1.15 main.c, 1.16, 1.17 task.c, 1.9, 1.10 slapi-plugin.h, 1.13, 1.14 mapping_tree.c, 1.7, 1.8
by Doctor Conrad
Author: nhosoi
Update of /cvs/dirsec/ldapserver/ldap/servers/slapd
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv32638
Modified Files:
slapi-private.h main.c task.c slapi-plugin.h mapping_tree.c
Log Message:
Resolves: #195305, #195307
Summary: [195305] make new_task() non-static
Changes: provide slapi_new_task and slapi_destroy_task as slapi APIs
Summary: [195307] task registration by plugins is wiped by task_init()
Changes: clean up old tasks before plugin_startall
Index: slapi-private.h
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/slapi-private.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- slapi-private.h 10 Nov 2006 23:45:40 -0000 1.14
+++ slapi-private.h 14 Dec 2006 23:16:54 -0000 1.15
@@ -744,6 +744,7 @@
/* begin and end the task subsystem */
void task_init(void);
void task_shutdown(void);
+void task_cleanup(void);
/* for reversible encyrption */
#define SLAPI_MB_CREDENTIALS "nsmultiplexorcredentials"
@@ -1033,11 +1034,6 @@
* JCMREPL - Added for the replication plugin.
*/
-/* Front end configuration */
-
-typedef int (*dseCallbackFn)(Slapi_PBlock *, Slapi_Entry *, Slapi_Entry *,
- int *, char*, void *);
-
/*
* Note: DSE callback functions MUST return one of these three values:
*
@@ -1177,23 +1173,10 @@
/***** End of items added for the replication plugin. ***********************/
-
/******************************************************************************
* Online tasks interface (to support import, export, etc)
* After some cleanup, we could consider making these public.
*/
-typedef struct _slapi_task Slapi_Task;
-typedef int (*TaskCallbackFn)(Slapi_Task *task);
-
-/* task states */
-#define SLAPI_TASK_SETUP 0
-#define SLAPI_TASK_RUNNING 1
-#define SLAPI_TASK_FINISHED 2
-#define SLAPI_TASK_CANCELLED 3
-
-/* task flags (set by the task-control code) */
-#define SLAPI_TASK_DESTROYING 0x01 /* queued event for destruction */
-
struct _slapi_task {
struct _slapi_task *next;
char *task_dn;
@@ -1212,26 +1195,8 @@
TaskCallbackFn destructor; /* task entry is being destroyed */
int task_refcount;
};
-
-int slapi_task_register_handler(const char *name, dseCallbackFn func);
-void slapi_task_status_changed(Slapi_Task *task);
-void slapi_task_log_status(Slapi_Task *task, char *format, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 2, 3)));
-#else
- ;
-#endif
-
-void slapi_task_log_notice(Slapi_Task *task, char *format, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 2, 3)));
-#else
- ;
-#endif
-
/* End of interface to support online tasks **********************************/
-
void DS_Sleep(PRIntervalTime ticks);
/* macro to specify the behavior of upgradedb */
Index: main.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/main.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- main.c 10 Nov 2006 23:45:40 -0000 1.16
+++ main.c 14 Dec 2006 23:16:54 -0000 1.17
@@ -1056,6 +1056,13 @@
LDAPDebug( LDAP_DEBUG_PLUGIN,
"Password Modify plugin registered.\n", 0, 0, 0 );
+ /* Cleanup old tasks that may still be in the DSE from a previous
+ session. Call before plugin_startall since cleanup needs to be
+ done before plugin_startall where user defined task plugins could
+ be started.
+ */
+ task_cleanup();
+
plugin_startall(argc, argv, 1 /* Start Backends */, 1 /* Start Globals */);
if (housekeeping_start((time_t)0, NULL) == NULL) {
exit (1);
Index: task.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/task.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- task.c 10 Nov 2006 23:45:40 -0000 1.9
+++ task.c 14 Dec 2006 23:16:54 -0000 1.10
@@ -78,8 +78,9 @@
Slapi_Entry *eAfter, int *returncode, char *returntext, void *arg);
static int task_generic_destructor(Slapi_Task *task);
-/* create new task, fill in DN, and setup modify callback */
-static Slapi_Task *new_task(const char *dn)
+/* create a new task, fill in DN, and setup modify callback */
+static Slapi_Task *
+new_task(const char *dn)
{
Slapi_Task *task = (Slapi_Task *)slapi_ch_calloc(1, sizeof(Slapi_Task));
@@ -109,7 +110,8 @@
}
/* called by the event queue to destroy a task */
-static void destroy_task(time_t when, void *arg)
+static void
+destroy_task(time_t when, void *arg)
{
Slapi_Task *task = (Slapi_Task *)arg;
Slapi_Task *t1;
@@ -150,6 +152,31 @@
slapi_ch_free((void **)&task);
}
+/*
+ * slapi_new_task: create a new task, fill in DN, and setup modify callback
+ * argument:
+ * dn: task dn
+ * result:
+ * Success: Slapi_Task object
+ * Failure: NULL
+ */
+Slapi_Task *
+slapi_new_task(const char *dn)
+{
+ return new_task(dn);
+}
+
+/* slapi_destroy_task: destroy a task
+ * argument:
+ * task: task to destroy
+ * result:
+ * none
+ */
+void
+slapi_destroy_task(void *arg)
+{
+ destroy_task(1, arg);
+}
/********** some useful helper functions **********/
@@ -1539,12 +1566,11 @@
}
}
-
/* cleanup old tasks that may still be in the DSE from a previous session
* (this can happen if the server crashes [no matter how unlikely we like
* to think that is].)
*/
-static void cleanup_old_tasks(void)
+void task_cleanup(void)
{
Slapi_PBlock *pb = slapi_pblock_new();
Slapi_Entry **entries = NULL;
@@ -1691,8 +1717,6 @@
return;
}
- cleanup_old_tasks();
-
slapi_task_register_handler("import", task_import_add);
slapi_task_register_handler("export", task_export_add);
slapi_task_register_handler("backup", task_backup_add);
Index: slapi-plugin.h
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/slapi-plugin.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- slapi-plugin.h 10 Nov 2006 23:45:40 -0000 1.13
+++ slapi-plugin.h 14 Dec 2006 23:16:54 -0000 1.14
@@ -150,7 +150,9 @@
typedef struct slapi_mod Slapi_Mod;
typedef struct slapi_mods Slapi_Mods;
typedef struct slapi_componentid Slapi_ComponentId;
-
+/* Online tasks interface (to support import, export, etc) */
+typedef struct _slapi_task Slapi_Task;
+typedef int (*TaskCallbackFn)(Slapi_Task *task);
/*
* The default thread stacksize for nspr21 is 64k (except on IRIX! It's 32k!).
@@ -1187,7 +1189,59 @@
int slapi_role_check(Slapi_Entry *entry_to_check, Slapi_DN *role_dn, int *present);
void slapi_register_role_check(roles_check_fn_type check_fn);
+/* DSE */
+/* Front end configuration */
+typedef int (*dseCallbackFn)(Slapi_PBlock *, Slapi_Entry *, Slapi_Entry *,
+ int *, char*, void *);
+
+/******************************************************************************
+ * Online tasks interface (to support import, export, etc)
+ * After some cleanup, we could consider making these public.
+ */
+
+/* task states */
+#define SLAPI_TASK_SETUP 0
+#define SLAPI_TASK_RUNNING 1
+#define SLAPI_TASK_FINISHED 2
+#define SLAPI_TASK_CANCELLED 3
+
+/* task flags (set by the task-control code) */
+#define SLAPI_TASK_DESTROYING 0x01 /* queued event for destruction */
+
+int slapi_task_register_handler(const char *name, dseCallbackFn func);
+void slapi_task_status_changed(Slapi_Task *task);
+void slapi_task_log_status(Slapi_Task *task, char *format, ...)
+#ifdef __GNUC__
+ __attribute__ ((format (printf, 2, 3)));
+#else
+ ;
+#endif
+
+void slapi_task_log_notice(Slapi_Task *task, char *format, ...)
+#ifdef __GNUC__
+ __attribute__ ((format (printf, 2, 3)));
+#else
+ ;
+#endif
+/*
+ * slapi_new_task: create new task, fill in DN, and setup modify callback
+ * argument:
+ * dn: task dn
+ * result:
+ * Success: Slapi_Task object
+ * Failure: NULL
+ */
+Slapi_Task *slapi_new_task(const char *dn);
+
+/* slapi_destroy_task: destroy a task
+ * argument:
+ * task: task to destroy
+ * result:
+ * none
+ */
+void slapi_destroy_task(void *arg);
+/* End of interface to support online tasks **********************************/
/* Binder-based (connection centric) resource limits */
/*
Index: mapping_tree.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/mapping_tree.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- mapping_tree.c 10 Nov 2006 23:45:40 -0000 1.7
+++ mapping_tree.c 14 Dec 2006 23:16:54 -0000 1.8
@@ -2445,7 +2445,8 @@
/* return next backend, increment index */
*be = target_node->mtn_be[*index];
if(*be==NULL) {
- if (target_node->mtn_be_states[*index] == SLAPI_BE_STATE_DELETE) {
+ if (NULL != target_node->mtn_be_states &&
+ target_node->mtn_be_states[*index] == SLAPI_BE_STATE_DELETE) {
/* This MTN is being deleted */
*be = defbackend_get_backend();
} else {
@@ -2816,7 +2817,7 @@
/* Some of the operations are not allowed from the plugins
* but default to specialized use of those operations
- * e.g rootDse search, NetscapeRoot searches
+ * e.g rootDse search, ConfigRoot searches
* cn=config, cn=schema etc
*/
17 years, 3 months
[Fedora-directory-commits] ldapserver/ldap/servers/slapd/back-ldbm ldif2ldbm.c, 1.11, 1.12
by Doctor Conrad
Author: nhosoi
Update of /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv6487
Modified Files:
ldif2ldbm.c
Log Message:
Resolves: #202843
Summary: referential integrity plugin does not stack with Class of Service appliance (Comment #16)
Changes: Don't call dblayer_close before plugin_closeall.
Index: ldif2ldbm.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/ldif2ldbm.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ldif2ldbm.c 10 Nov 2006 23:45:39 -0000 1.11
+++ ldif2ldbm.c 13 Dec 2006 22:21:22 -0000 1.12
@@ -783,7 +783,7 @@
* Note that we should only call this once. If we're
* dumping several backends then it gets called multiple
* times and we get warnings in the error log like this:
- * WARNING: ldbm instance NetscapeRoot already exists
+ * WARNING: ldbm instance userRoot already exists
*/
ldbm_config_load_dse_info(li);
}
@@ -1205,24 +1205,6 @@
"db2ldif: Failed to close database\n",
0, 0, 0 );
}
- } else if (run_from_cmdline && dump_replica) {
- /*
- * It should not be necessary to close the dblayer here.
- * However it masks complex thread timing issues that
- * prevent a correct shutdown of the plugins. Closing the
- * dblayer here means we cannot dump multiple replicas
- * using -r, but the server doesn't allow that either.
- */
-
- /*
- * Use DBLAYER_NORMAL_MODE to match the value that was provided
- * to dblayer_start() and ensure creation of the guardian file.
- */
- if (0 != dblayer_close(li,DBLAYER_NORMAL_MODE)) {
- LDAPDebug( LDAP_DEBUG_ANY,
- "db2ldif: Failed to close database\n",
- 0, 0, 0 );
- }
}
if (!run_from_cmdline) {
17 years, 3 months
[Fedora-directory-commits] ldapserver/ldap/admin/src create_instance.c, 1.38, 1.39
by Doctor Conrad
Author: nhosoi
Update of /cvs/dirsec/ldapserver/ldap/admin/src
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20466
Modified Files:
create_instance.c
Log Message:
Resolves: #202843
Summary: referential integrity plugin does not stack with Class of Service appliance (Comment #14)
Changes: Added the CoS plugin dependency to MMR.
Index: create_instance.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/admin/src/create_instance.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- create_instance.c 8 Dec 2006 18:11:09 -0000 1.38
+++ create_instance.c 12 Dec 2006 06:39:17 -0000 1.39
@@ -2991,6 +2991,7 @@
fprintf(f, "nsslapd-pluginenabled: on\n");
fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
fprintf(f, "nsslapd-plugin-depends-on-named: Multimaster Replication Plugin\n");
+ fprintf(f, "nsslapd-plugin-depends-on-named: Class of Service\n");
fprintf(f, "\n");
fprintf(f, "dn: cn=Multimaster Replication Plugin,cn=plugins,cn=config\n");
@@ -3004,6 +3005,7 @@
fprintf(f, "nsslapd-pluginenabled: on\n");
fprintf(f, "nsslapd-plugin-depends-on-named: ldbm database\n");
fprintf(f, "nsslapd-plugin-depends-on-named: DES\n");
+ fprintf(f, "nsslapd-plugin-depends-on-named: Class of Service\n");
fprintf(f, "\n");
fprintf(f, "dn: cn=Retro Changelog Plugin,cn=plugins,cn=config\n");
@@ -3016,6 +3018,7 @@
fprintf(f, "nsslapd-plugintype: object\n");
fprintf(f, "nsslapd-pluginenabled: off\n");
fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
+ fprintf(f, "nsslapd-plugin-depends-on-named: Class of Service\n");
fprintf(f, "\n");
17 years, 3 months