diff options
Diffstat (limited to 'lib/ldb/common/ldb.c')
-rw-r--r-- | lib/ldb/common/ldb.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/ldb/common/ldb.c b/lib/ldb/common/ldb.c index 2dd2d1bdde..0c5f40ae4b 100644 --- a/lib/ldb/common/ldb.c +++ b/lib/ldb/common/ldb.c @@ -848,11 +848,15 @@ int ldb_request(struct ldb_context *ldb, struct ldb_request *req) discard_const(&req->op.add.message)); if (ret != LDB_SUCCESS) { ldb_oom(ldb); - return LDB_ERR_OPERATIONS_ERROR; + return ret; } FIRST_OP(ldb, add); ret = ldb_msg_check_element_flags(ldb, req->op.add.message); if (ret != LDB_SUCCESS) { + /* + * "ldb_msg_check_element_flags" generates an error + * string + */ return ret; } ret = module->ops->add(module, req); @@ -866,6 +870,10 @@ int ldb_request(struct ldb_context *ldb, struct ldb_request *req) FIRST_OP(ldb, modify); ret = ldb_msg_check_element_flags(ldb, req->op.mod.message); if (ret != LDB_SUCCESS) { + /* + * "ldb_msg_check_element_flags" generates an error + * string + */ return ret; } ret = module->ops->modify(module, req); @@ -903,6 +911,12 @@ int ldb_request(struct ldb_context *ldb, struct ldb_request *req) break; } + if ((ret != LDB_SUCCESS) && (ldb->err_string == NULL)) { + /* if no error string was setup by the backend */ + ldb_asprintf_errstring(ldb, "ldb_request: %s (%d)", + ldb_strerror(ret), ret); + } + return ret; } |