summaryrefslogtreecommitdiffstats
path: root/src/back-sch.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@dahyabhai.net>2013-08-06 17:07:59 -0400
committerNalin Dahyabhai <nalin@dahyabhai.net>2013-08-12 15:43:31 -0400
commit256d984243742c3fa1ffda7852f2893b39645677 (patch)
treeb9a6391fa61bac0b8390a25426dead1d00c3030f /src/back-sch.c
parentefad6a64030a7586a65e57697305141eddf63f81 (diff)
downloadslapi-nis-256d984243742c3fa1ffda7852f2893b39645677.tar.gz
slapi-nis-256d984243742c3fa1ffda7852f2893b39645677.tar.xz
slapi-nis-256d984243742c3fa1ffda7852f2893b39645677.zip
Explicitly track the sources of cached entries
Diffstat (limited to 'src/back-sch.c')
-rw-r--r--src/back-sch.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/back-sch.c b/src/back-sch.c
index 8359056..5eeeacf 100644
--- a/src/back-sch.c
+++ b/src/back-sch.c
@@ -258,12 +258,14 @@ backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
/* Create and destroy entry-specific data. */
static struct backend_entry_data *
-backend_entry_make_entry_data(Slapi_DN *original_entry_dn, Slapi_Entry *e)
+backend_entry_make_entry_data(enum backend_entry_source source,
+ Slapi_DN *original_entry_dn, Slapi_Entry *e)
{
struct backend_entry_data *ret;
ret = malloc(sizeof(*ret));
if (ret != NULL) {
ret->original_entry_dn = slapi_sdn_dup(original_entry_dn);
+ ret->source = source;
ret->e = e;
} else {
slapi_entry_free(e);
@@ -387,9 +389,9 @@ 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_PBlock *pb, Slapi_Entry *e,
- struct backend_set_data *data)
+static void
+backend_set_entry_from(Slapi_PBlock *pb, enum backend_entry_source source,
+ Slapi_Entry *e, struct backend_set_data *data)
{
const char *hexchars = "0123456789ABCDEF";
char *rdn, *ndn, *ldif, *plugin_id, *keys[2], *values[2], **ava, *p, *q;
@@ -608,7 +610,8 @@ backend_set_entry(Slapi_PBlock *pb, Slapi_Entry *e,
data->common.group, data->common.set, ndn,
&rdn_len, keys,
&value_len, values,
- backend_entry_make_entry_data(e_dn, entry),
+ backend_entry_make_entry_data(source, e_dn,
+ entry),
backend_entry_free_entry_data);
} else {
if (rdnstr == NULL) {
@@ -638,6 +641,11 @@ backend_set_entry(Slapi_PBlock *pb, Slapi_Entry *e,
slapi_rdn_free(&srdn);
format_free_data(rdn);
}
+void
+backend_set_entry(Slapi_PBlock *pb, Slapi_Entry *e, struct backend_set_data *data)
+{
+ backend_set_entry_from(pb, backend_entry_source_dit, e, data);
+}
/* Process a set configuration directory entry. Pull out the group and
* container names which are valid for this configuration and configure such a
@@ -1305,7 +1313,7 @@ backend_search_cb(Slapi_PBlock *pb)
backend_retrieve_from_nsswitch(staged, &cbdata);
}
next = staged->next;
- staged = next;
+ staged = staged->next;
}
staged = cbdata.staged;
/* Add the entries to the map cache */
@@ -1322,7 +1330,8 @@ backend_search_cb(Slapi_PBlock *pb)
!map_data_check_entry(cbdata.state,
staged->map_group, staged->map_set,
slapi_sdn_get_ndn(staged->entries[i]))) {
- backend_set_entry(cbdata.pb, staged->entries[i], staged->set_data);
+ backend_set_entry_from(cbdata.pb, backend_entry_source_nsswitch,
+ staged->entries[i], staged->set_data);
}
slapi_entry_free(staged->entries[i]);
staged->entries[i] = NULL;