summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@dahyabhai.net>2012-01-16 14:17:28 -0500
committerNalin Dahyabhai <nalin@dahyabhai.net>2012-01-16 14:17:28 -0500
commita4547135db29233dedc4b6bf429d3cfe89182e75 (patch)
treeeea0028ee1e573e39ebfecce9b7426b87fdcea62 /src
parentc0b3083e1e71e90ce83a6f33fe8bebb9c6e17722 (diff)
downloadslapi-nis-a4547135db29233dedc4b6bf429d3cfe89182e75.tar.gz
slapi-nis-a4547135db29233dedc4b6bf429d3cfe89182e75.tar.xz
slapi-nis-a4547135db29233dedc4b6bf429d3cfe89182e75.zip
- in callbacks, only use pblocks that are built from pblocks that we
already have, so that we can pass the transaction ID around; this includes additional parameters for a number of functions and a new callback data type for backend_set_config_entry_add_cb()
Diffstat (limited to 'src')
-rw-r--r--src/back-nis.c52
-rw-r--r--src/back-sch.c38
-rw-r--r--src/back-shr.c115
-rw-r--r--src/back-shr.h7
-rw-r--r--src/backend.h23
-rw-r--r--src/format.c61
-rw-r--r--src/format.h6
-rw-r--r--src/map.c10
-rw-r--r--src/plug-nis.c2
-rw-r--r--src/plug-sch.c4
10 files changed, 195 insertions, 123 deletions
diff --git a/src/back-nis.c b/src/back-nis.c
index c824312..e7ba2dc 100644
--- a/src/back-nis.c
+++ b/src/back-nis.c
@@ -72,9 +72,10 @@ backend_free_master_name(struct plugin_state *state, char *master)
backend_shr_free_server_name(state, master);
}
int
-backend_read_master_name(struct plugin_state *state, char **master)
+backend_read_master_name(struct plugin_state *state, Slapi_PBlock *pb,
+ char **master)
{
- return backend_shr_read_server_name(state, master);
+ return backend_shr_read_server_name(pb, state, master);
}
/* Manipulate map configuration data. */
@@ -189,7 +190,8 @@ backend_free_gathered_data(char **all, unsigned int *all_lengths,
free(group_lengths);
}
static char **
-backend_gather_data(struct plugin_state *state, Slapi_Entry *e,
+backend_gather_data(struct plugin_state *state,
+ Slapi_PBlock *pb, Slapi_Entry *e,
const char *domain, const char *map,
char **single_formats, char **group_formats,
const char *disallowed_chars,
@@ -250,7 +252,7 @@ backend_gather_data(struct plugin_state *state, Slapi_Entry *e,
}
n = 0;
for (i = 0; i < n_singles; i++) {
- singles[i] = format_get_data(state, e, domain, map,
+ singles[i] = format_get_data(state, pb, e, domain, map,
single_formats[i],
disallowed_chars,
rel_attrs, ref_attrs, inref_attrs,
@@ -278,7 +280,7 @@ backend_gather_data(struct plugin_state *state, Slapi_Entry *e,
}
}
for (i = 0, j = 0; i < n_groups; i++) {
- groups[j] = format_get_data_set(state, e, domain, map,
+ groups[j] = format_get_data_set(state, pb, e, domain, map,
group_formats[i],
disallowed_chars,
rel_attrs, ref_attrs, inref_attrs,
@@ -333,7 +335,8 @@ backend_gather_data(struct plugin_state *state, Slapi_Entry *e,
* determine which value should be associated with those keys, and add them to
* the map cache. */
void
-backend_set_entry(Slapi_Entry *e, struct backend_set_data *data)
+backend_set_entry(Slapi_PBlock *pb, Slapi_Entry *e,
+ struct backend_set_data *data)
{
char **all_keys, **all_values, *ndn, *plugin_id;
char **key_singles, ***key_groups, **value_singles, ***value_groups;
@@ -352,7 +355,7 @@ backend_set_entry(Slapi_Entry *e, struct backend_set_data *data)
"examining unnamed input entry(?)\n");
}
/* Pull out the keys and value for the entry. */
- all_keys = backend_gather_data(data->common.state, e,
+ all_keys = backend_gather_data(data->common.state, pb, e,
data->common.group,
data->common.set,
data->key_formats,
@@ -369,7 +372,7 @@ backend_set_entry(Slapi_Entry *e, struct backend_set_data *data)
&n_key_groups,
&key_groups,
&key_group_lengths);
- all_values = backend_gather_data(data->common.state, e,
+ all_values = backend_gather_data(data->common.state, pb, e,
data->common.group,
data->common.set,
data->value_formats,
@@ -549,7 +552,7 @@ backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
(keys_formats ? NULL :
(default_key_format ?
backend_shr_dup_strlist_n((char **) &default_key_format,
- 1) :
+ 1) :
NULL));
/* Use the supplied keys-format. If there is none, and there is also
* not a supplied key-format, use the default. */
@@ -558,7 +561,7 @@ backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
(key_formats ? NULL :
(default_keys_format ?
backend_shr_dup_strlist_n((char **) &default_keys_format,
- 1) :
+ 1) :
NULL));
/* Use the supplied value-format. If there is none, and there is also
* not a supplied values-format, use the default. */
@@ -567,7 +570,7 @@ backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
(values_formats ? NULL :
(default_value_format ?
backend_shr_dup_strlist_n((char **) &default_value_format,
- 1) :
+ 1) :
NULL));
/* Use the supplied values-format. If there is none, and there is also
* not a supplied value-format, use the default. */
@@ -576,7 +579,7 @@ backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
(value_formats ? NULL :
(default_values_format ?
backend_shr_dup_strlist_n((char **) &default_values_format,
- 1) :
+ 1) :
NULL));
/* We don't supply defaults for search locations. */
use_bases = backend_shr_dup_strlist(bases);
@@ -717,16 +720,18 @@ backend_set_config_entry_add_cb(Slapi_Entry *e, void *callback_data)
{
char **domains, **maps;
int i, j, ret;
- struct plugin_state *state;
+ struct backend_set_config_entry_add_cbdata *cbdata;
- state = callback_data;
- domains = backend_shr_get_vattr_strlist(state, e,
+ cbdata = callback_data;
+ domains = backend_shr_get_vattr_strlist(cbdata->state, e,
NIS_MAP_CONFIGURATION_DOMAIN_ATTR);
- maps = backend_shr_get_vattr_strlist(state, e,
+ maps = backend_shr_get_vattr_strlist(cbdata->state, e,
NIS_MAP_CONFIGURATION_MAP_ATTR);
for (i = 0; (domains != NULL) && (domains[i] != NULL); i++) {
for (j = 0; (maps != NULL) && (maps[j] != NULL); j++) {
- ret = backend_shr_set_config_entry_add(state, e,
+ ret = backend_shr_set_config_entry_add(cbdata->state,
+ cbdata->pb,
+ e,
domains[i],
maps[j]);
}
@@ -738,7 +743,7 @@ backend_set_config_entry_add_cb(Slapi_Entry *e, void *callback_data)
/* Update/initialize parameters stored in the plugin's configuration entry. */
void
-backend_update_params(struct plugin_state *state)
+backend_update_params(Slapi_PBlock *pb, struct plugin_state *state)
{
Slapi_DN *our_dn;
Slapi_Entry *our_entry;
@@ -757,7 +762,7 @@ backend_update_params(struct plugin_state *state)
state->plugin_base ? "\"" : "");
return;
}
- wrap_search_internal_get_entry(our_dn, NULL, NULL, &our_entry,
+ wrap_search_internal_get_entry(pb, our_dn, NULL, NULL, &our_entry,
state->plugin_identity);
slapi_sdn_free(&our_dn);
our_dn = NULL;
@@ -853,7 +858,8 @@ backend_get_set_config_entry_cb(Slapi_Entry *e, void *callback_data)
}
void
-backend_get_set_config(struct plugin_state *state,
+backend_get_set_config(Slapi_PBlock *parent_pb,
+ struct plugin_state *state,
const char *domain, const char *map,
char ***bases, char **entry_filter)
{
@@ -891,7 +897,7 @@ backend_get_set_config(struct plugin_state *state,
state->plugin_desc->spd_id,
"searching from \"%s\" for \"%s\" for configuration\n",
state->plugin_base, filter);
- pb = slapi_pblock_new();
+ pb = wrap_pblock_new(parent_pb);
slapi_search_internal_set_pb(pb,
state->plugin_base,
LDAP_SCOPE_SUBTREE,
@@ -958,9 +964,9 @@ backend_check_empty(struct plugin_state *state,
/* Scan for the list of configured domains and maps. */
void
-backend_startup(struct plugin_state *state)
+backend_startup(Slapi_PBlock *pb, struct plugin_state *state)
{
- backend_shr_startup(state, NIS_MAP_CONFIGURATION_FILTER);
+ backend_shr_startup(state, pb, NIS_MAP_CONFIGURATION_FILTER);
}
/* Set up our post-op callbacks. */
diff --git a/src/back-sch.c b/src/back-sch.c
index 3a91a74..4fc2c2b 100644
--- a/src/back-sch.c
+++ b/src/back-sch.c
@@ -75,7 +75,8 @@ backend_free_master_name(struct plugin_state *state, char *master)
}
int
-backend_read_master_name(struct plugin_state *state, char **master)
+backend_read_master_name(struct plugin_state *state, Slapi_PBlock *pb,
+ char **master)
{
*master = "localhost";
return -1;
@@ -283,7 +284,8 @@ backend_set_operational_attributes(Slapi_Entry *e,
/* Given a map-entry directory entry, determine a key, a value, and extra data
* to be stored in the map cache, and add them to the map cache. */
void
-backend_set_entry(Slapi_Entry *e, struct backend_set_data *data)
+backend_set_entry(Slapi_PBlock *pb, Slapi_Entry *e,
+ struct backend_set_data *data)
{
char *dn, *rdn, *ndn, *ldif, *plugin_id, *keys[2], *values[2], **ava;
char *attr, *val;
@@ -306,7 +308,7 @@ backend_set_entry(Slapi_Entry *e, struct backend_set_data *data)
"examining unnamed input entry(?)\n");
}
/* Generate the RDN for the entry. */
- rdn = format_get_data(data->common.state, e,
+ rdn = format_get_data(data->common.state, pb, e,
data->common.group, data->common.set,
data->rdn_format, NULL,
&data->common.rel_attrs,
@@ -338,7 +340,7 @@ backend_set_entry(Slapi_Entry *e, struct backend_set_data *data)
for (i = 0; data->attribute_format[i] != NULL; i++) {
/* Expand the format specifier into a list. */
ava_lens = NULL;
- ava = format_get_data_set(data->common.state, e,
+ ava = format_get_data_set(data->common.state, pb, e,
data->common.group,
data->common.set,
data->attribute_format[i],
@@ -475,25 +477,29 @@ backend_set_config_entry_add_cb(Slapi_Entry *e, void *callback_data)
{
char **groups, **containers;
int i, j, ret;
- struct plugin_state *state;
+ struct backend_set_config_entry_add_cbdata *cbdata;
- state = callback_data;
- groups = backend_shr_get_vattr_strlist(state, e,
+ cbdata = callback_data;
+ groups = backend_shr_get_vattr_strlist(cbdata->state, e,
SCH_CONTAINER_CONFIGURATION_GROUP_ATTR);
- containers = backend_shr_get_vattr_strlist(state, e,
+ containers = backend_shr_get_vattr_strlist(cbdata->state, e,
SCH_CONTAINER_CONFIGURATION_CONTAINER_ATTR);
for (i = 0; (groups != NULL) && (groups[i] != NULL); i++) {
/* If this is a multiple-container group, walk the list. */
for (j = 0;
(containers != NULL) && (containers[j] != NULL);
j++) {
- ret = backend_shr_set_config_entry_add(state, e,
+ ret = backend_shr_set_config_entry_add(cbdata->state,
+ cbdata->pb,
+ e,
groups[i],
containers[j]);
}
/* If there are no containers, add one with an empty name. */
if (containers == NULL) {
- ret = backend_shr_set_config_entry_add(state, e,
+ ret = backend_shr_set_config_entry_add(cbdata->state,
+ cbdata->pb,
+ e,
groups[i],
"");
}
@@ -582,7 +588,7 @@ backend_get_set_config_entry_if_matching_cb(Slapi_Entry *e, void *callback_data)
}
void
-backend_get_set_config(struct plugin_state *state,
+backend_get_set_config(Slapi_PBlock *parent_pb, struct plugin_state *state,
const char *group, const char *container,
char ***bases, char **entry_filter)
{
@@ -647,7 +653,7 @@ backend_get_set_config(struct plugin_state *state,
state->plugin_desc->spd_id,
"searching from \"%s\" for \"%s\" for configuration\n",
state->plugin_base, SCH_CONTAINER_CONFIGURATION_FILTER);
- pb = slapi_pblock_new();
+ pb = wrap_pblock_new(parent_pb);
slapi_search_internal_set_pb(pb,
state->plugin_base,
LDAP_SCOPE_SUBTREE,
@@ -691,7 +697,7 @@ backend_entry_get_set_config_entry_filter(void)
/* Re-read plugin-wide settings that may have changed. Nothing to do. */
void
-backend_update_params(struct plugin_state *state)
+backend_update_params(Slapi_PBlock *pb, struct plugin_state *state)
{
}
@@ -952,7 +958,7 @@ backend_search_group_cb(const char *group, void *cb_data)
group_dn, LDAP_SCOPE_SUBTREE)) {
cbdata->answer = TRUE;
}
-
+
slapi_sdn_free(&group_dn);
return TRUE;
@@ -1266,9 +1272,9 @@ backend_check_empty(struct plugin_state *state,
/* Populate our data cache. */
void
-backend_startup(struct plugin_state *state)
+backend_startup(Slapi_PBlock *pb, struct plugin_state *state)
{
- backend_shr_startup(state, SCH_CONTAINER_CONFIGURATION_FILTER);
+ backend_shr_startup(state, pb, SCH_CONTAINER_CONFIGURATION_FILTER);
}
int
diff --git a/src/back-shr.c b/src/back-shr.c
index 003a728..803435a 100644
--- a/src/back-shr.c
+++ b/src/back-shr.c
@@ -66,7 +66,8 @@ backend_shr_free_server_name(struct plugin_state *state, char *master)
free(master);
}
int
-backend_shr_read_server_name(struct plugin_state *state, char **master)
+backend_shr_read_server_name(Slapi_PBlock *pb, struct plugin_state *state,
+ char **master)
{
Slapi_DN *config_dn;
Slapi_Entry *config;
@@ -86,7 +87,7 @@ backend_shr_read_server_name(struct plugin_state *state, char **master)
"error parsing \"cn=config\"\n");
return -1;
}
- wrap_search_internal_get_entry(config_dn, NULL, attrs, &config,
+ wrap_search_internal_get_entry(pb, config_dn, NULL, attrs, &config,
state->plugin_identity);
if (config == NULL) {
slapi_log_error(SLAPI_LOG_PLUGIN,
@@ -267,20 +268,27 @@ backend_shr_add_strlist(char ***strlist, const char *value)
/* Set or unset the entry using information in the callback data. */
static void
-backend_shr_set_entry(Slapi_Entry *e, struct backend_set_data *set_data)
+backend_shr_set_entry(Slapi_PBlock *pb, Slapi_Entry *e, struct backend_set_data *set_data)
{
- backend_set_entry(e, set_data);
+ backend_set_entry(pb, e, set_data);
}
+struct backend_shr_set_entry_cbdata {
+ Slapi_PBlock *pb;
+ struct backend_set_data *set_data;
+};
static int
-backend_shr_set_entry_cb(Slapi_Entry *e, void *set_data)
+backend_shr_set_entry_cb(Slapi_Entry *e, void *callback_data)
{
- backend_shr_set_entry(e, set_data);
+ struct backend_shr_set_entry_cbdata *cbdata;
+ cbdata = callback_data;
+ backend_shr_set_entry(cbdata->pb, e, cbdata->set_data);
return 0;
}
/* Set or unset the named entry using information in the callback data. */
static void
backend_shr_set_config_entry_set_one_dn(struct plugin_state *state,
+ Slapi_PBlock *pb,
const char *dn,
struct backend_set_data *set_data)
{
@@ -293,14 +301,14 @@ backend_shr_set_config_entry_set_one_dn(struct plugin_state *state,
"error parsing DN \"%s\"\n", dn);
return;
} else {
- wrap_search_internal_get_entry(sdn, NULL, NULL, &entry,
+ wrap_search_internal_get_entry(pb, sdn, NULL, NULL, &entry,
state->plugin_identity);
if (entry == NULL) {
slapi_log_error(SLAPI_LOG_PLUGIN,
state->plugin_desc->spd_id,
"failure reading entry \"%s\"\n", dn);
} else {
- backend_shr_set_entry(entry, set_data);
+ backend_shr_set_entry(pb, entry, set_data);
slapi_entry_free(entry);
}
slapi_sdn_free(&sdn);
@@ -335,7 +343,7 @@ backend_shr_entry_matches(Slapi_PBlock *pb, Slapi_Entry *e,
ret = FALSE;
} else {
ret = TRUE;
- }
+ }
slapi_sdn_free(&containing_sdn);
slapi_sdn_free(&entry_sdn);
@@ -368,16 +376,17 @@ backend_shr_set_config_free_config(void *cb_data)
struct backend_shr_set_data *set_data;
set_data = cb_data;
backend_set_config_free_config(set_data);
-
}
int
-backend_shr_set_config_entry_add(struct plugin_state *state, Slapi_Entry *e,
+backend_shr_set_config_entry_add(struct plugin_state *state,
+ Slapi_PBlock *parent_pb, Slapi_Entry *e,
const char *group, const char *set)
{
Slapi_PBlock *pb;
int i;
bool_t flag;
struct backend_shr_set_data *set_data;
+ struct backend_shr_set_entry_cbdata cbdata;
char **set_bases;
char *set_entry_filter;
@@ -406,7 +415,7 @@ backend_shr_set_config_entry_add(struct plugin_state *state, Slapi_Entry *e,
state->plugin_desc->spd_id,
"searching '%s' for '%s'\n",
set_bases[i], set_entry_filter);
- pb = slapi_pblock_new();
+ pb = wrap_pblock_new(parent_pb);
slapi_search_internal_set_pb(pb,
set_bases[i],
LDAP_SCOPE_SUBTREE,
@@ -416,7 +425,9 @@ backend_shr_set_config_entry_add(struct plugin_state *state, Slapi_Entry *e,
NULL,
state->plugin_identity,
0);
- slapi_search_internal_callback_pb(pb, set_data,
+ cbdata.set_data = set_data->self;
+ cbdata.pb = pb;
+ slapi_search_internal_callback_pb(pb, &cbdata,
NULL,
backend_shr_set_entry_cb,
NULL);
@@ -552,17 +563,20 @@ backend_shr_get_vattr_boolean(struct plugin_state *state,
/* Scan for the list of configured groups and sets. */
void
-backend_shr_startup(struct plugin_state *state, const char *filter)
+backend_shr_startup(struct plugin_state *state,
+ Slapi_PBlock *parent_pb,
+ const char *filter)
{
Slapi_PBlock *pb;
+ struct backend_set_config_entry_add_cbdata set_cbdata;
- backend_update_params(state);
+ backend_update_params(parent_pb, state);
slapi_log_error(SLAPI_LOG_PLUGIN,
state->plugin_desc->spd_id,
"searching under \"%s\" for configuration\n",
state->plugin_base);
- pb = slapi_pblock_new();
+ pb = wrap_pblock_new(parent_pb);
slapi_search_internal_set_pb(pb,
state->plugin_base,
LDAP_SCOPE_ONELEVEL,
@@ -573,7 +587,9 @@ backend_shr_startup(struct plugin_state *state, const char *filter)
state->plugin_identity,
0);
map_wrlock();
- slapi_search_internal_callback_pb(pb, state,
+ set_cbdata.state = state;
+ set_cbdata.pb = pb;
+ slapi_search_internal_callback_pb(pb, &set_cbdata,
NULL,
backend_set_config_entry_add_cb,
NULL);
@@ -833,6 +849,7 @@ backend_shr_mods_as_string(LDAPMod **mods)
/* Update any entries in the map for which the passed-in entry will affect the
* values which are derived. */
struct backend_shr_update_references_cbdata {
+ Slapi_PBlock *pb;
Slapi_Entry *e;
LDAPMod **mods;
};
@@ -845,6 +862,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
struct plugin_state *state;
struct backend_shr_set_data *set_data;
struct backend_shr_update_references_cbdata *cbdata;
+ struct backend_shr_set_entry_cbdata set_cbdata;
struct backend_shr_note_entry_sdn_cbdata note_cbdata;
Slapi_DN *referred_to_sdn, **these_entries, **prev_entries;
Slapi_DN **next_entries, **these_bases, **prev_bases;
@@ -923,7 +941,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
for (i = 0;
(set_bases != NULL) && (set_bases[i] != NULL);
i++) {
- pb = slapi_pblock_new();
+ pb = wrap_pblock_new(cbdata->pb);
slapi_search_internal_set_pb(pb,
set_bases[i],
LDAP_SCOPE_SUBTREE,
@@ -933,7 +951,9 @@ backend_shr_update_references_cb(const char *group, const char *set,
NULL,
state->plugin_identity,
0);
- slapi_search_internal_callback_pb(pb, set_data,
+ set_cbdata.set_data = set_data->self;
+ set_cbdata.pb = pb;
+ slapi_search_internal_callback_pb(pb, &set_cbdata,
NULL,
backend_shr_set_entry_cb,
NULL);
@@ -983,6 +1003,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
if (map_data_check_entry(state, group, set, ndn)) {
/* ...update it. */
backend_shr_set_config_entry_set_one_dn(state,
+ cbdata->pb,
ndn,
set_data->self);
}
@@ -1083,7 +1104,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
"with scope %d\n",
slapi_sdn_get_ndn(these_bases[l]),
filter, scope);
- pb = slapi_pblock_new();
+ pb = wrap_pblock_new(cbdata->pb);
slapi_search_internal_set_pb(pb,
slapi_sdn_get_ndn(these_bases[l]),
scope,
@@ -1124,7 +1145,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
"scope %d\n",
slapi_sdn_get_ndn(prev_bases[l]),
filter, scope);
- pb = slapi_pblock_new();
+ pb = wrap_pblock_new(cbdata->pb);
slapi_search_internal_set_pb(pb,
slapi_sdn_get_ndn(prev_bases[l]),
scope,
@@ -1189,6 +1210,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
"dependent entry: \"%s\"\n",
ndn);
backend_shr_set_config_entry_set_one_dn(state,
+ cbdata->pb,
ndn,
set_data->self);
}
@@ -1249,7 +1271,8 @@ backend_shr_update_references_cb(const char *group, const char *set,
/* Read the linked-to DN from the named
* attribute in the entry. */
values = NULL;
- wrap_search_internal_get_entry(these_entries[k],
+ wrap_search_internal_get_entry(cbdata->pb,
+ these_entries[k],
NULL,
these_attrs,
&this_entry,
@@ -1262,10 +1285,10 @@ backend_shr_update_references_cb(const char *group, const char *set,
slapi_sdn_get_ndn(these_entries[k]));
continue;
}
- pb = slapi_pblock_new();
+ pb = wrap_pblock_new(cbdata->pb);
if ((next_filter != NULL) &&
(slapi_filter_test(pb, this_entry,
- next_filter, 0) != 0)) {
+ next_filter, 0) != 0)) {
slapi_log_error(SLAPI_LOG_PLUGIN,
state->plugin_desc->spd_id,
"entry \"%s\" did not "
@@ -1291,7 +1314,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
&value);
l != -1;
l = slapi_valueset_next_value(values, l,
- &value)) {
+ &value)) {
/* Pull out the value, which is a
* referred-to entry's DN. */
dn = slapi_value_get_string(value);
@@ -1316,7 +1339,8 @@ backend_shr_update_references_cb(const char *group, const char *set,
/* Read the linked-to DN from the named
* attribute in the entry. */
values = NULL;
- wrap_search_internal_get_entry(these_entries[k],
+ wrap_search_internal_get_entry(cbdata->pb,
+ these_entries[k],
NULL,
next_attrs,
&this_entry,
@@ -1343,7 +1367,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
&value);
l != -1;
l = slapi_valueset_next_value(values, l,
- &value)) {
+ &value)) {
/* Pull out the value, which is a
* referred-to entry's DN. */
dn = slapi_value_get_string(value);
@@ -1399,6 +1423,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
"dependent entry: \"%s\"\n",
ndn);
backend_shr_set_config_entry_set_one_dn(state,
+ cbdata->pb,
ndn,
set_data->self);
}
@@ -1409,10 +1434,13 @@ backend_shr_update_references_cb(const char *group, const char *set,
}
void
-backend_shr_update_references(struct plugin_state *state, Slapi_Entry *e,
+backend_shr_update_references(struct plugin_state *state,
+ Slapi_PBlock *pb,
+ Slapi_Entry *e,
LDAPMod **mods)
{
struct backend_shr_update_references_cbdata cbdata;
+ cbdata.pb = pb;
cbdata.e = e;
cbdata.mods = mods;
if (!map_data_foreach_map(state, NULL,
@@ -1456,7 +1484,7 @@ backend_shr_add_entry_cb(const char *group, const char *set, bool_t secure,
/* Set the entry in the map which corresponds to this entry, or clear
* any that might if this entry doesn't have a key and value. */
- backend_set_entry(cbdata->e, set_data->self);
+ backend_set_entry(cbdata->pb, cbdata->e, set_data->self);
return TRUE;
}
@@ -1465,6 +1493,7 @@ static int
backend_shr_add_cb(Slapi_PBlock *pb)
{
struct backend_add_entry_cbdata cbdata;
+ struct backend_set_config_entry_add_cbdata set_cbdata;
char *dn;
/* If we somehow recursed here from ourselves, just bail. */
@@ -1514,11 +1543,13 @@ backend_shr_add_cb(Slapi_PBlock *pb)
slapi_log_error(SLAPI_LOG_PLUGIN,
cbdata.state->plugin_desc->spd_id,
"new entry \"%s\" is a set\n", cbdata.ndn);
- backend_set_config_entry_add_cb(cbdata.e, cbdata.state);
+ set_cbdata.state = cbdata.state;
+ set_cbdata.pb = pb;
+ backend_set_config_entry_add_cb(cbdata.e, &set_cbdata);
}
/* Update entries in maps which are affected by this entry. */
- backend_shr_update_references(cbdata.state, cbdata.e, NULL);
+ backend_shr_update_references(cbdata.state, pb, cbdata.e, NULL);
map_unlock();
wrap_dec_call_level();
@@ -1600,7 +1631,7 @@ backend_shr_modify_entry_cb(const char *group, const char *set, bool_t flag,
/* Set the entry in the set which corresponds to this entry, or
* remove any that might if this entry doesn't produce a useful
* value. */
- backend_shr_set_entry(cbdata->e_post, set_data->self);
+ backend_shr_set_entry(cbdata->pb, cbdata->e_post, set_data->self);
}
return TRUE;
}
@@ -1611,6 +1642,7 @@ backend_shr_modify_cb(Slapi_PBlock *pb)
Slapi_DN *sdn;
char *dn;
struct backend_shr_modify_entry_cbdata cbdata;
+ struct backend_set_config_entry_add_cbdata set_cbdata;
/* If we somehow recursed here from ourselves, just bail. */
if (wrap_get_call_level() > 0) {
@@ -1659,10 +1691,10 @@ backend_shr_modify_cb(Slapi_PBlock *pb)
}
/* Update entries which need to be updated in case they are no longer
* affected by this entry. */
- backend_shr_update_references(cbdata.state, cbdata.e_pre, cbdata.mods);
+ backend_shr_update_references(cbdata.state, pb, cbdata.e_pre, cbdata.mods);
/* Update entries which need to be updated in case they are now
* affected by this entry. */
- backend_shr_update_references(cbdata.state, cbdata.e_post, cbdata.mods);
+ backend_shr_update_references(cbdata.state, pb, cbdata.e_post, cbdata.mods);
/* If it's a map configuration entry, reconfigure, clear, and
* repopulate the map. */
if (backend_shr_entry_is_a_set(cbdata.state, pb, cbdata.e_pre)) {
@@ -1677,7 +1709,9 @@ backend_shr_modify_cb(Slapi_PBlock *pb)
cbdata.state->plugin_desc->spd_id,
"modified entry \"%s\" is now a set\n",
cbdata.ndn);
- backend_set_config_entry_add_cb(cbdata.e_post, cbdata.state);
+ set_cbdata.state = cbdata.state;
+ set_cbdata.pb = pb;
+ backend_set_config_entry_add_cb(cbdata.e_post, &set_cbdata);
}
/* Lastly, if the entry is our own entry, re-read parameters. */
sdn = slapi_sdn_new_dn_byref(cbdata.state->plugin_base);
@@ -1686,7 +1720,7 @@ backend_shr_modify_cb(Slapi_PBlock *pb)
slapi_sdn_get_ndn(sdn)) == 0) ||
(strcmp(slapi_entry_get_ndn(cbdata.e_post),
slapi_sdn_get_ndn(sdn)) == 0)) {
- backend_update_params(cbdata.state);
+ backend_update_params(pb, cbdata.state);
}
slapi_sdn_free(&sdn);
}
@@ -1738,7 +1772,7 @@ backend_shr_modrdn_entry_cb(const char *group, const char *set, bool_t secure,
cbdata->pb,
cbdata->e_post);
if (matched_post) {
- backend_set_entry(cbdata->e_post, set_data->self);
+ backend_set_entry(cbdata->pb, cbdata->e_post, set_data->self);
}
return TRUE;
}
@@ -1747,6 +1781,7 @@ static int
backend_shr_modrdn_cb(Slapi_PBlock *pb)
{
struct backend_shr_modrdn_entry_cbdata cbdata;
+ struct backend_set_config_entry_add_cbdata set_cbdata;
/* If we somehow recursed here from ourselves, just bail. */
if (wrap_get_call_level() > 0) {
@@ -1807,7 +1842,9 @@ backend_shr_modrdn_cb(Slapi_PBlock *pb)
cbdata.state->plugin_desc->spd_id,
"renamed entry \"%s\" is now a set\n",
slapi_entry_get_ndn(cbdata.e_post));
- backend_set_config_entry_add_cb(cbdata.e_post, cbdata.state);
+ set_cbdata.state = cbdata.state;
+ set_cbdata.pb = pb;
+ backend_set_config_entry_add_cb(cbdata.e_post, &set_cbdata);
}
map_unlock();
wrap_dec_call_level();
@@ -1896,7 +1933,7 @@ backend_shr_delete_cb(Slapi_PBlock *pb)
}
/* Update entries which need to be updated in case they are no longer
* affected by this entry. */
- backend_shr_update_references(cbdata.state, cbdata.e, NULL);
+ backend_shr_update_references(cbdata.state, pb, cbdata.e, NULL);
map_unlock();
wrap_dec_call_level();
return 0;
diff --git a/src/back-shr.h b/src/back-shr.h
index 4e56605..dd9d424 100644
--- a/src/back-shr.h
+++ b/src/back-shr.h
@@ -25,7 +25,8 @@
struct plugin_state;
void backend_shr_free_server_name(struct plugin_state *state, char *master);
-int backend_shr_read_server_name(struct plugin_state *state, char **master);
+int backend_shr_read_server_name(Slapi_PBlock *pb, struct plugin_state *state,
+ char **master);
void backend_shr_free_strlist(char **strlist);
char **backend_shr_dup_strlist_n(char **strlist, int n);
@@ -33,7 +34,8 @@ char **backend_shr_dup_strlist(char **strlist);
char **backend_shr_dup_strlist_unless_empty(char **strlist);
void backend_shr_add_strlist(char ***strlist, const char *item);
-void backend_shr_startup(struct plugin_state *state, const char *set_filter);
+void backend_shr_startup(struct plugin_state *state,
+ Slapi_PBlock *pb, const char *set_filter);
int backend_shr_postop_init(Slapi_PBlock *pb, struct plugin_state *state);
int backend_shr_internal_postop_init(Slapi_PBlock *pb, struct plugin_state *state);
#ifdef USE_SLAPI_BE_TXNS
@@ -41,6 +43,7 @@ int backend_shr_be_txn_postop_init(Slapi_PBlock *pb, struct plugin_state *state)
#endif
int backend_shr_set_config_entry_add(struct plugin_state *state,
+ Slapi_PBlock *pb,
Slapi_Entry *e,
const char *group_name,
const char *set_name);
diff --git a/src/backend.h b/src/backend.h
index bf58456..f981300 100644
--- a/src/backend.h
+++ b/src/backend.h
@@ -50,32 +50,41 @@ struct backend_shr_set_data {
};
/* Startup/initialization functions called through the map. */
-void backend_startup(struct plugin_state *state);
+void backend_startup(struct slapi_pblock *pb, struct plugin_state *state);
int backend_init_preop(struct slapi_pblock *pb, struct plugin_state *state);
int backend_init_postop(struct slapi_pblock *pb, struct plugin_state *state);
-int backend_init_internal_postop(struct slapi_pblock *pb, struct plugin_state *state);
+int backend_init_internal_postop(struct slapi_pblock *pb,
+ struct plugin_state *state);
#ifdef USE_SLAPI_BE_TXNS
-int backend_init_be_txn_postop(struct slapi_pblock *pb, struct plugin_state *state);
+int backend_init_be_txn_postop(struct slapi_pblock *pb,
+ struct plugin_state *state);
#endif
/* Read the server's name. */
-int backend_read_master_name(struct plugin_state *state, char **master);
+int backend_read_master_name(struct plugin_state *state,
+ struct slapi_pblock *pb,
+ char **master);
void backend_free_master_name(struct plugin_state *state, char *master);
/* Read enough of the set's configuration for the formatter to be able to
* resolve references correctly. */
-void backend_get_set_config(struct plugin_state *state,
+void backend_get_set_config(Slapi_PBlock *pb, struct plugin_state *state,
const char *group, const char *set,
char ***bases, char **entry_filter);
void backend_free_set_config(char **bases, char *entry_filter);
/* Check if an entry is a set configuration, and add or remove one. */
const char *backend_entry_get_set_config_entry_filter(void);
+struct backend_set_config_entry_add_cbdata {
+ struct plugin_state *state;
+ Slapi_PBlock *pb;
+};
int backend_set_config_entry_add_cb(Slapi_Entry *e, void *callback_data);
int backend_set_config_entry_delete_cb(Slapi_Entry *e, void *callback_data);
/* Set an entry in a set. */
-void backend_set_entry(Slapi_Entry *e, struct backend_set_data *set_data);
+void backend_set_entry(Slapi_PBlock *pb, Slapi_Entry *e,
+ struct backend_set_data *set_data);
/* Read and free set configurations. */
void backend_set_config_read_config(struct plugin_state *state,
@@ -91,7 +100,7 @@ void backend_check_empty(struct plugin_state *state,
/* Re-read any plugin configuration data which can be modified without
* requiring a restart. */
-void backend_update_params(struct plugin_state *state);
+void backend_update_params(Slapi_PBlock *pb, struct plugin_state *state);
/* Check if the operation which this pblock describes was initiated by the
* current plugin. */
diff --git a/src/format.c b/src/format.c
index ba09b41..60c3bf6 100644
--- a/src/format.c
+++ b/src/format.c
@@ -286,13 +286,14 @@ format_add_sdn_list(struct slapi_dn ***list, struct slapi_dn ***list2,
}
static int
-format_check_entry(const char *dn, char *filter, void *identity)
+format_check_entry(Slapi_PBlock *pb, const char *dn, char *filter,
+ void *identity)
{
Slapi_DN *sdn;
Slapi_Entry *entry;
sdn = slapi_sdn_new_dn_byval(dn);
- wrap_search_internal_get_entry(sdn, filter, NULL, &entry, identity);
+ wrap_search_internal_get_entry(pb, sdn, filter, NULL, &entry, identity);
slapi_sdn_free(&sdn);
if (entry != NULL) {
slapi_entry_free(entry);
@@ -303,10 +304,11 @@ format_check_entry(const char *dn, char *filter, void *identity)
}
static void
-format_add_filtered_sdn_list(struct slapi_dn ***list, struct slapi_dn ***list2,
+format_add_filtered_sdn_list(Slapi_PBlock *pb,
+ struct slapi_dn ***list, struct slapi_dn ***list2,
const char *dn, char *filter, void *identity)
{
- if (format_check_entry(dn, filter, identity) == 0) {
+ if (format_check_entry(pb, dn, filter, identity) == 0) {
format_add_sdn_list(list, list2, dn);
}
}
@@ -947,7 +949,7 @@ format_first(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
default_value = argv[1];
}
ret = -ENOENT;
- values = format_get_data_set(state, e, group, set,
+ values = format_get_data_set(state, pb, e, group, set,
value_format, disallowed,
rel_attrs, ref_attrs, inref_attrs,
ref_attr_list, inref_attr_list,
@@ -1057,7 +1059,7 @@ format_deref_x(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
"\"%s\"\n", fname, cref);
continue;
}
- wrap_search_internal_get_entry(refdn, filter, attrs, &ref,
+ wrap_search_internal_get_entry(pb, refdn, filter, attrs, &ref,
state->plugin_identity);
if (ref == NULL) {
slapi_log_error(SLAPI_LOG_PLUGIN,
@@ -1271,7 +1273,7 @@ format_deref_rx(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
&list->links[i].base_sdn_list2,
slapi_sdn_get_ndn(parent));
/* Pull up the named entry. */
- wrap_search_internal_get_entry(these[j],
+ wrap_search_internal_get_entry(pb, these[j],
NULL,
attrs, &entry,
state->plugin_identity);
@@ -1315,13 +1317,13 @@ format_deref_rx(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
}
/* Let's visit the named entry this
* time, in case we're nesting. */
- format_add_filtered_sdn_list(&these, &these2,
+ format_add_filtered_sdn_list(pb, &these, &these2,
cvalue,
list->links[i + 1].filter_str,
state->plugin_identity);
/* We need to visit the named entry
* next time. */
- format_add_filtered_sdn_list(&next, &next2,
+ format_add_filtered_sdn_list(pb, &next, &next2,
cvalue,
list->links[i + 1].filter_str,
state->plugin_identity);
@@ -1586,7 +1588,7 @@ format_referred(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
* examine. */
set_filter = NULL;
set_bases = NULL;
- backend_get_set_config(state, group, other_set,
+ backend_get_set_config(pb, state, group, other_set,
&set_bases, &set_filter);
if (set_bases == NULL) {
slapi_log_error(SLAPI_LOG_PLUGIN,
@@ -1640,7 +1642,7 @@ format_referred(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
attrs[1] = NULL;
for (i = 0; (set_bases != NULL) && (set_bases[i] != NULL); i++) {
/* Set up the search. */
- local_pb = slapi_pblock_new();
+ local_pb = wrap_pblock_new(pb);
slapi_search_internal_set_pb(local_pb,
set_bases[i], LDAP_SCOPE_SUBTREE,
filter, attrs, FALSE,
@@ -1828,7 +1830,7 @@ format_referred_r(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
/* Get the searching parameters for the set which contains the entry,
* and all of the referred-to sets, and save them for use at the last
* link in the chain. */
- backend_get_set_config(state, group, set,
+ backend_get_set_config(pb, state, group, set,
&set_bases, &set_filter);
for (i = 0; (set_bases != NULL) && (set_bases[i] != NULL); i++) {
format_add_sdn_list(&(list->links[0].base_sdn_list),
@@ -1837,7 +1839,7 @@ format_referred_r(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
}
backend_free_set_config(set_bases, set_filter);
for (i = 0; i < list->n_links - 1; i++) {
- backend_get_set_config(state, group, argv[i * 2],
+ backend_get_set_config(pb, state, group, argv[i * 2],
&set_bases, &set_filter);
for (j = 0;
(set_bases != NULL) && (set_bases[j] != NULL);
@@ -1896,7 +1898,7 @@ format_referred_r(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
"referred_r: searching under %s"
" for \"%s\" (link=1.%d)\n",
ndn, filter, i);
- local_pb = slapi_pblock_new();
+ local_pb = wrap_pblock_new(pb);
slapi_search_internal_set_pb(local_pb,
ndn,
LDAP_SCOPE_SUBTREE,
@@ -1937,7 +1939,7 @@ format_referred_r(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
"referred_r: searching under %s"
" for \"%s\" (link=2.%d)\n",
ndn, filter, i);
- local_pb = slapi_pblock_new();
+ local_pb = wrap_pblock_new(pb);
slapi_search_internal_set_pb(local_pb,
ndn,
LDAP_SCOPE_SUBTREE,
@@ -2017,7 +2019,7 @@ format_merge(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
/* Expand this argument. */
slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id,
"merge: expanding ->%s<-\n", argv[i]);
- values = format_get_data_set(state, e, group, set,
+ values = format_get_data_set(state, pb, e, group, set,
argv[i], disallowed,
rel_attrs, ref_attrs, inref_attrs,
ref_attr_list, inref_attr_list,
@@ -2105,7 +2107,7 @@ format_match_generic(struct plugin_state *state,
matches = NULL;
count = 0;
lengths = NULL;
- values = format_get_data_set(state, e, group, set,
+ values = format_get_data_set(state, pb, e, group, set,
argv[0], disallowed,
rel_attrs, ref_attrs, inref_attrs,
ref_attr_list, inref_attr_list,
@@ -2157,7 +2159,7 @@ format_match_generic(struct plugin_state *state,
/* Either no matches, or too many matches to store. */
default_value = NULL;
if ((default_arg >= 0) && (argv[default_arg] != NULL)) {
- default_value = format_get_data(state, e,
+ default_value = format_get_data(state, pb, e,
group, set,
argv[default_arg],
disallowed,
@@ -2553,7 +2555,7 @@ format_ifeq(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
}
/* Evaluate the value expression to get a list of candidate values. */
- values = format_get_data_set(state, e, group, set,
+ values = format_get_data_set(state, pb, e, group, set,
argv[1], disallowed,
rel_attrs, ref_attrs, inref_attrs,
ref_attr_list, inref_attr_list,
@@ -2636,7 +2638,7 @@ format_collect(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
choices = NULL;
for (i = 0; i < argc; i++) {
/* Evaluate this argument. */
- values = format_get_data_set(state, e, group, set,
+ values = format_get_data_set(state, pb, e, group, set,
argv[i], disallowed,
rel_attrs, ref_attrs, inref_attrs,
ref_attr_list, inref_attr_list,
@@ -2752,7 +2754,7 @@ format_link(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
for (i = 0; i < argc; i += 3) {
slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id,
"link: evaluating \"%s\"\n", argv[i]);
- values[i / 3] = format_get_data_set(state, e, group, set,
+ values[i / 3] = format_get_data_set(state, pb, e, group, set,
argv[i], disallowed,
rel_attrs,
ref_attrs, inref_attrs,
@@ -2925,7 +2927,7 @@ format_unique(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
default_value = argv[1];
}
ret = -ENOENT;
- values = format_get_data_set(state, e, group, set,
+ values = format_get_data_set(state, pb, e, group, set,
value_format, disallowed,
rel_attrs, ref_attrs, inref_attrs,
ref_attr_list, inref_attr_list,
@@ -3821,7 +3823,8 @@ format_expand(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e,
}
static char *
-format_format(struct plugin_state *state, Slapi_Entry *e,
+format_format(struct plugin_state *state,
+ Slapi_PBlock *parent_pb, Slapi_Entry *e,
const char *group, const char *set,
const char *fmt, const char *disallowed,
struct format_choice **choices,
@@ -3849,7 +3852,7 @@ format_format(struct plugin_state *state, Slapi_Entry *e,
return NULL;
}
- pb = slapi_pblock_new();
+ pb = wrap_pblock_new(parent_pb);
i = format_expand(state, pb, e, group, set,
fmt, disallowed,
buf, buflen, choices,
@@ -3909,7 +3912,8 @@ format_free_data(char *data)
}
}
char *
-format_get_data(struct plugin_state *state, Slapi_Entry *e,
+format_get_data(struct plugin_state *state,
+ Slapi_PBlock *pb, Slapi_Entry *e,
const char *group, const char *set,
const char *fmt, const char *disallowed,
char ***rel_attrs,
@@ -3920,7 +3924,7 @@ format_get_data(struct plugin_state *state, Slapi_Entry *e,
unsigned int *data_length)
{
unsigned int ignored;
- return format_format(state, e, group, set, fmt,
+ return format_format(state, pb, e, group, set, fmt,
disallowed, NULL,
rel_attrs,
ref_attrs, inref_attrs,
@@ -3941,7 +3945,8 @@ format_free_data_set(char **data, unsigned int *data_lengths)
free(data_lengths);
}
char **
-format_get_data_set(struct plugin_state *state, Slapi_Entry *e,
+format_get_data_set(struct plugin_state *state,
+ Slapi_PBlock *pb, Slapi_Entry *e,
const char *group, const char *set,
const char *fmt, const char *disallowed,
char ***rel_attrs,
@@ -3957,7 +3962,7 @@ format_get_data_set(struct plugin_state *state, Slapi_Entry *e,
int combinations, groupsize, i, j, k, offset, length, prev_offset;
unsigned int template_len;
choices = NULL;
- template = format_format(state, e, group, set, fmt, disallowed,
+ template = format_format(state, pb, e, group, set, fmt, disallowed,
&choices,
rel_attrs, ref_attrs, inref_attrs,
ref_attr_list, inref_attr_list,
diff --git a/src/format.h b/src/format.h
index ff3edda..0aa7d20 100644
--- a/src/format.h
+++ b/src/format.h
@@ -54,7 +54,8 @@ void format_add_sdn_list(struct slapi_dn ***list, struct slapi_dn ***list2,
const char *dn);
void format_free_data(char *data);
-char *format_get_data(struct plugin_state *state, struct slapi_entry *e,
+char *format_get_data(struct plugin_state *state,
+ struct slapi_pblock *pb, struct slapi_entry *e,
const char *domain, const char *map,
const char *fmt,
const char *disallowed_chars,
@@ -65,7 +66,8 @@ char *format_get_data(struct plugin_state *state, struct slapi_entry *e,
struct format_ref_attr_list ***inref_attr_list,
unsigned int *data_length);
void format_free_data_set(char **data_set, unsigned int *data_lengths);
-char **format_get_data_set(struct plugin_state *state, Slapi_Entry *e,
+char **format_get_data_set(struct plugin_state *state,
+ Slapi_PBlock *pb, Slapi_Entry *e,
const char *domain, const char *map,
const char *fmt,
const char *disallowed,
diff --git a/src/map.c b/src/map.c
index f91a36a..84957de 100644
--- a/src/map.c
+++ b/src/map.c
@@ -293,7 +293,7 @@ bool_t
map_data_foreach_entry_id(struct plugin_state *state,
const char *domain, const char *map, const char *id,
bool_t (*fn)(const char *domain, const char *map,
- bool_t secure,
+ bool_t secure,
const char *key,
unsigned int key_len,
const char *value,
@@ -389,7 +389,10 @@ int
map_master_name(struct plugin_state *state, const char **master)
{
char *tmp, hostname[HOST_NAME_MAX + 1];
- if (backend_read_master_name(state, &tmp) == 0) {
+ Slapi_PBlock *pb;
+
+ pb = slapi_pblock_new();
+ if (backend_read_master_name(state, pb, &tmp) == 0) {
free(map_data.master);
map_data.master = strdup(tmp);
backend_free_master_name(state, tmp);
@@ -402,6 +405,7 @@ map_master_name(struct plugin_state *state, const char **master)
map_data.master = strdup(hostname);
}
*master = map_data.master;
+ slapi_pblock_destroy(pb);
return 0;
}
@@ -640,7 +644,7 @@ map_data_check_entry(struct plugin_state *state,
{
return (map_data_find_map_entry_id(state,
map_data_find_map(state,
- domain_name,
+ domain_name,
map_name),
id) != NULL);
}
diff --git a/src/plug-nis.c b/src/plug-nis.c
index ca3a253..bc6b899 100644
--- a/src/plug-nis.c
+++ b/src/plug-nis.c
@@ -88,7 +88,7 @@ plugin_startup(Slapi_PBlock *pb)
state->plugin_base ? state->plugin_base : "NULL",
state->plugin_base ? "\"" : "");
/* Populate the maps and data. */
- backend_startup(state);
+ backend_startup(pb, state);
/* Start a new listening thread to handle incoming traffic. */
state->tid = wrap_start_thread(&dispatch_thread, state);
if (state->tid == NULL) {
diff --git a/src/plug-sch.c b/src/plug-sch.c
index 5315acd..e39b0cf 100644
--- a/src/plug-sch.c
+++ b/src/plug-sch.c
@@ -105,7 +105,7 @@ plugin_startup(Slapi_PBlock *pb)
state->plugin_base ? state->plugin_base : "NULL",
state->plugin_base ? "\"" : "");
/* Populate the tree of fake entries. */
- backend_startup(state);
+ backend_startup(pb, state);
/* Note that the plugin is ready to go. */
slapi_log_error(SLAPI_LOG_PLUGIN, plugin_description.spd_id,
"plugin startup completed\n");
@@ -229,8 +229,8 @@ schema_compat_plugin_init(Slapi_PBlock *pb)
"error registering internal postoperation plugin\n");
return -1;
}
-#if 0
#ifdef USE_SLAPI_BE_TXNS
+#if 0
if (slapi_register_plugin("betxnpostoperation", TRUE,
"schema_compat_plugin_init_be_txn_postop",
schema_compat_plugin_init_be_txn_postop,