git.samba.org
/
nivanova
/
samba-autobuild
/
.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dsdb: improve debug message
[nivanova/samba-autobuild/.git]
/
lib
/
ldb
/
common
/
ldb.c
diff --git
a/lib/ldb/common/ldb.c
b/lib/ldb/common/ldb.c
index a4c04cec4614871877b8b13a1517265602ac60a4..a223b87c45e905cf311acdb497c072020a7053ef 100644
(file)
--- a/
lib/ldb/common/ldb.c
+++ b/
lib/ldb/common/ldb.c
@@
-269,28
+269,25
@@
int ldb_connect(struct ldb_context *ldb, const char *url,
void ldb_set_errstring(struct ldb_context *ldb, const char *err_string)
{
void ldb_set_errstring(struct ldb_context *ldb, const char *err_string)
{
- if (ldb->err_string) {
- talloc_free(ldb->err_string);
- }
- ldb->err_string = talloc_strdup(ldb, err_string);
- if (ldb->flags & LDB_FLG_ENABLE_TRACING) {
- ldb_debug(ldb, LDB_DEBUG_TRACE, "ldb_set_errstring: %s", ldb->err_string);
- }
+ ldb_asprintf_errstring(ldb, "%s", err_string);
}
void ldb_asprintf_errstring(struct ldb_context *ldb, const char *format, ...)
{
va_list ap;
}
void ldb_asprintf_errstring(struct ldb_context *ldb, const char *format, ...)
{
va_list ap;
- char *old_string = NULL;
if (ldb->err_string) {
if (ldb->err_string) {
-
old_string = ldb->err_string
;
+
talloc_free(ldb->err_string)
;
}
va_start(ap, format);
ldb->err_string = talloc_vasprintf(ldb, format, ap);
va_end(ap);
}
va_start(ap, format);
ldb->err_string = talloc_vasprintf(ldb, format, ap);
va_end(ap);
- talloc_free(old_string);
+
+ if (ldb->flags & LDB_FLG_ENABLE_TRACING) {
+ ldb_debug(ldb, LDB_DEBUG_TRACE, "ldb_asprintf/set_errstring: %s",
+ ldb->err_string);
+ }
}
void ldb_reset_err_string(struct ldb_context *ldb)
}
void ldb_reset_err_string(struct ldb_context *ldb)
@@
-546,7
+543,7
@@
int ldb_transaction_cancel_noerr(struct ldb_context *ldb)
}
}
-/* autostarts a transacion if none active */
+/* autostarts a transac
t
ion if none active */
static int ldb_autotransaction_request(struct ldb_context *ldb,
struct ldb_request *req)
{
static int ldb_autotransaction_request(struct ldb_context *ldb,
struct ldb_request *req)
{
@@
-567,11
+564,6
@@
static int ldb_autotransaction_request(struct ldb_context *ldb,
}
ldb_transaction_cancel(ldb);
}
ldb_transaction_cancel(ldb);
- if (ldb->err_string == NULL) {
- /* no error string was setup by the backend */
- ldb_asprintf_errstring(ldb, "%s (%d)", ldb_strerror(ret), ret);
- }
-
return ret;
}
return ret;
}
@@
-581,26
+573,41
@@
int ldb_wait(struct ldb_handle *handle, enum ldb_wait_type type)
int ret;
if (!handle) {
int ret;
if (!handle) {
- return
LDB_ERR_UNAVAILABLE
;
+ return
ldb_error(handle->ldb, LDB_ERR_UNAVAILABLE, NULL)
;
}
if (handle->state == LDB_ASYNC_DONE) {
}
if (handle->state == LDB_ASYNC_DONE) {
+ if ((handle->status != LDB_SUCCESS) &&
+ (handle->ldb->err_string == NULL)) {
+ /* if no error string was setup by the backend */
+ ldb_asprintf_errstring(handle->ldb, "ldb_wait: %s (%d)",
+ ldb_strerror(handle->status),
+ handle->status);
+ }
return handle->status;
}
ev = ldb_get_event_context(handle->ldb);
if (NULL == ev) {
return handle->status;
}
ev = ldb_get_event_context(handle->ldb);
if (NULL == ev) {
- return
LDB_ERR_OPERATIONS_ERROR
;
+ return
ldb_oom(handle->ldb)
;
}
switch (type) {
case LDB_WAIT_NONE:
ret = tevent_loop_once(ev);
if (ret != 0) {
}
switch (type) {
case LDB_WAIT_NONE:
ret = tevent_loop_once(ev);
if (ret != 0) {
- return
LDB_ERR_OPERATIONS_ERROR
;
+ return
ldb_operr(handle->ldb)
;
}
}
- if (handle->state == LDB_ASYNC_DONE ||
- handle->status != LDB_SUCCESS) {
+ if (handle->status != LDB_SUCCESS) {
+ if (handle->ldb->err_string == NULL) {
+ /*
+ * if no error string was setup by the backend
+ */
+ ldb_asprintf_errstring(handle->ldb,
+ "ldb_wait: %s (%d)",
+ ldb_strerror(handle->status),
+ handle->status);
+ }
return handle->status;
}
break;
return handle->status;
}
break;
@@
-609,13
+616,35
@@
int ldb_wait(struct ldb_handle *handle, enum ldb_wait_type type)
while (handle->state != LDB_ASYNC_DONE) {
ret = tevent_loop_once(ev);
if (ret != 0) {
while (handle->state != LDB_ASYNC_DONE) {
ret = tevent_loop_once(ev);
if (ret != 0) {
- return
LDB_ERR_OPERATIONS_ERROR
;
+ return
ldb_operr(handle->ldb)
;
}
if (handle->status != LDB_SUCCESS) {
}
if (handle->status != LDB_SUCCESS) {
+ if (handle->ldb->err_string == NULL) {
+ /*
+ * if no error string was setup by the
+ * backend
+ */
+ ldb_asprintf_errstring(handle->ldb,
+ "ldb_wait: %s (%d)",
+ ldb_strerror(handle->status),
+ handle->status);
+ }
return handle->status;
}
}
return handle->status;
}
}
- return handle->status;
+ if (handle->status != LDB_SUCCESS) {
+ if (handle->ldb->err_string == NULL) {
+ /*
+ * if no error string was setup by the backend
+ */
+ ldb_asprintf_errstring(handle->ldb,
+ "ldb_wait: %s (%d)",
+ ldb_strerror(handle->status),
+ handle->status);
+ }
+ return handle->status;
+ }
+ break;
}
return LDB_SUCCESS;
}
return LDB_SUCCESS;
@@
-851,11
+880,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);
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) {
}
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);
return ret;
}
ret = module->ops->add(module, req);
@@
-869,6
+902,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) {
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);
return ret;
}
ret = module->ops->modify(module, req);
@@
-906,6
+943,12
@@
int ldb_request(struct ldb_context *ldb, struct ldb_request *req)
break;
}
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;
}
return ret;
}
@@
-1026,7
+1069,7
@@
int ldb_modify_default_callback(struct ldb_request *req, struct ldb_reply *ares)
return ldb_request_done(req, LDB_SUCCESS);
default:
talloc_free(ares);
return ldb_request_done(req, LDB_SUCCESS);
default:
talloc_free(ares);
- ldb_
set_errstring(req->handle->ldb, "Invalid reply type!"
);
+ ldb_
asprintf_errstring(req->handle->ldb, "Invalid LDB reply type %d", ares->type
);
return ldb_request_done(req, LDB_ERR_OPERATIONS_ERROR);
}
return ldb_request_done(req, LDB_ERR_OPERATIONS_ERROR);
}
@@
-1050,7
+1093,7
@@
int ldb_op_default_callback(struct ldb_request *req, struct ldb_reply *ares)
if (ares->type != LDB_REPLY_DONE) {
talloc_free(ares);
if (ares->type != LDB_REPLY_DONE) {
talloc_free(ares);
- ldb_
set_errstring(req->handle->ldb, "Invalid reply type!"
);
+ ldb_
asprintf_errstring(req->handle->ldb, "Invalid LDB reply type %d", ares->type
);
return ldb_request_done(req, LDB_ERR_OPERATIONS_ERROR);
}
return ldb_request_done(req, LDB_ERR_OPERATIONS_ERROR);
}
@@
-1356,7
+1399,7
@@
int ldb_extended_default_callback(struct ldb_request *req,
}
talloc_free(ares);
}
talloc_free(ares);
- ldb_
set_errstring(req->handle->ldb, "Invalid reply type!"
);
+ ldb_
asprintf_errstring(req->handle->ldb, "Invalid LDB reply type %d", ares->type
);
return ldb_request_done(req, LDB_ERR_OPERATIONS_ERROR);
}
return ldb_request_done(req, LDB_ERR_OPERATIONS_ERROR);
}