ret = ltdb_store(module, msg, TDB_INSERT);
if (ret != LDB_SUCCESS) {
+ switch (ret) {
+ case LDB_ERR_ENTRY_ALREADY_EXISTS:
+ {
+ TALLOC_CTX *mem_ctx = talloc_new(module);
+ char *errstring, *dn;
+ if (!mem_ctx) {
+ break;
+ }
+ dn = ldb_dn_linearize(mem_ctx, msg->dn);
+ if (!dn) {
+ break;
+ }
+ errstring = talloc_asprintf(mem_ctx, "Entry %s already exists",
+ dn);
+ ldb_set_errstring(module->ldb, errstring);
+ talloc_free(mem_ctx);
+ break;
+ }
+ }
return ret;
}
if (msg->elements[i].num_values == 0) {
if (msg_delete_attribute(module, ldb, msg2,
msg->elements[i].name) != 0) {
- err_string = talloc_asprintf(module, "No such attribute: %s", msg->elements[i].name);
+ err_string = talloc_asprintf(module, "No such attribute: %s for delete on %s",
+ msg->elements[i].name, dn);
if (err_string) ldb_set_errstring(module->ldb, err_string);
ret = LDB_ERR_NO_SUCH_ATTRIBUTE;
goto failed;
msg2,
msg->elements[i].name,
&msg->elements[i].values[j]) != 0) {
- err_string = talloc_asprintf(module, "No such attribute: %s", msg->elements[i].name);
+ err_string = talloc_asprintf(module, "No matching attribute value when deleting attribute: %s on %s",
+ msg->elements[i].name, dn);
if (err_string) ldb_set_errstring(module->ldb, err_string);
ret = LDB_ERR_NO_SUCH_ATTRIBUTE;
goto failed;