From 256d984243742c3fa1ffda7852f2893b39645677 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Tue, 6 Aug 2013 17:07:59 -0400 Subject: Explicitly track the sources of cached entries --- src/back-sch.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/back-sch.c') 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; -- cgit