summaryrefslogtreecommitdiffstats
path: root/src/back-shr.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@redhat.com>2012-01-17 18:21:44 -0500
committerNalin Dahyabhai <nalin@redhat.com>2012-01-17 18:21:44 -0500
commit8065d0bc4975b0291276e6bd295ea78817d6dd35 (patch)
treed7be932d32b5b67d69bb10352b644ecd896b1834 /src/back-shr.c
parentec2d6ef64176519944d7917699cc15446b6d052a (diff)
downloadslapi-nis-8065d0bc4975b0291276e6bd295ea78817d6dd35.tar.gz
slapi-nis-8065d0bc4975b0291276e6bd295ea78817d6dd35.tar.xz
slapi-nis-8065d0bc4975b0291276e6bd295ea78817d6dd35.zip
- if there are _no_ substantive changes, drop out of modify even earlier -- this was causing tests to fail when even the modification time wasn't changing, and we later mistook the NULL array of mods to mean that we hadn't worked them out, which caused us to do the work unnecessarily
Diffstat (limited to 'src/back-shr.c')
-rw-r--r--src/back-shr.c40
1 files changed, 37 insertions, 3 deletions
diff --git a/src/back-shr.c b/src/back-shr.c
index 29463a5..3130d08 100644
--- a/src/back-shr.c
+++ b/src/back-shr.c
@@ -882,7 +882,6 @@ backend_shr_update_references_cb(const char *group, const char *set,
struct format_ref_attr_list_link *this_attr_link, *prev_attr_link;
struct format_ref_attr_list_link *next_attr_link;
const char *ndn, *dn;
- char *modlist;
int i, j, k, l, disposition, buffer_flags, n_ref_attrs, scope;
set_data = backend_data;
@@ -949,6 +948,17 @@ backend_shr_update_references_cb(const char *group, const char *set,
cbdata->modlist,
backend_shr_get_rel_attr_list(set_data));
}
+ } else {
+ slapi_log_error(SLAPI_LOG_PLUGIN,
+ state->plugin_desc->spd_id,
+ "reference-based changes for "
+ "\"%s\"/\"%s\" made in (\"%s\") "
+ "(%s in %s)\n",
+ set_data->group,
+ set_data->set,
+ slapi_entry_get_ndn(cbdata->e),
+ cbdata->modlist,
+ backend_shr_get_rel_attr_list(set_data));
}
/* For every entry in this set which refers to this entry using
@@ -1693,6 +1703,17 @@ backend_shr_modify_entry_cb(const char *group, const char *set, bool_t flag,
cbdata->modlist,
backend_shr_get_rel_attr_list(set_data));
}
+ } else {
+ slapi_log_error(SLAPI_LOG_PLUGIN,
+ cbdata->state->plugin_desc->spd_id,
+ "changes for "
+ "\"%s\"/\"%s\" made in (\"%s\") "
+ "(%s in %s)\n",
+ set_data->group,
+ set_data->set,
+ cbdata->ndn,
+ cbdata->modlist,
+ backend_shr_get_rel_attr_list(set_data));
}
/* If the entry used to match the map, remove it. */
if (backend_shr_entry_matches_set(set_data, cbdata->pb,
@@ -1724,7 +1745,7 @@ static int
backend_shr_modify_cb(Slapi_PBlock *pb)
{
Slapi_DN *sdn;
- char *dn;
+ char *dn, *log_modlist;
struct backend_shr_modify_entry_cbdata cbdata;
struct backend_set_config_entry_add_cbdata set_cbdata;
@@ -1787,6 +1808,19 @@ backend_shr_modify_cb(Slapi_PBlock *pb)
slapi_entry_diff(cbdata.real_mods, cbdata.e_pre, cbdata.e_post, 0);
cbdata.mods = slapi_mods_get_ldapmods_byref(cbdata.real_mods);
cbdata.ndn = slapi_entry_get_ndn(cbdata.e_pre);
+ if (cbdata.mods == NULL) {
+ slapi_pblock_get(pb, SLAPI_MODIFY_MODS, &cbdata.mods);
+ log_modlist = backend_shr_mods_as_string(cbdata.mods);
+ slapi_log_error(SLAPI_LOG_PLUGIN,
+ cbdata.state->plugin_desc->spd_id,
+ "no substantive changes to %s: "
+ "(%s) simplified to ()\n",
+ cbdata.ndn,
+ log_modlist);
+ slapi_mods_free(&cbdata.real_mods);
+ free(log_modlist);
+ return 0;
+ }
cbdata.modlist = backend_shr_mods_as_string(cbdata.mods);
/* Modify map entries which corresponded to this directory server
* entry. */
@@ -1807,7 +1841,7 @@ backend_shr_modify_cb(Slapi_PBlock *pb)
* affected by this entry. */
backend_shr_update_references(cbdata.state, pb, cbdata.e_post,
cbdata.mods, cbdata.modlist);
- /* Done with the "real" mods. */
+ /* Done with the "real" mods. Put the fake ones back. */
slapi_mods_free(&cbdata.real_mods);
slapi_pblock_get(pb, SLAPI_MODIFY_MODS, &cbdata.mods);
/* If it's a map configuration entry, reconfigure, clear, and