[SCM] Samba Shared Repository - branch master updated
Andrew Tridgell
tridge at samba.org
Tue Oct 11 02:16:03 MDT 2011
The branch, master has been updated
via fea02ce ldb:ldb_autotransaction_request - error string shouldn't be set here
via 21d053d ldb:pyldb.c - py_ldb_* modification calls - error string shouldn't be set here
via 96a9f82 s4:ldap_backend.c/"map_ldb_error" - handle errors similar to "PyErr_SetLdbError"
via 7599d59 ldb:ldb.c/"ldb_wait" - make "ldb_wait" always return an error string
via 500d1ba ldb:ldb.c/"ldb_wait" - change "ldb_wait" slightly in order to introduce error messages
via 8cab94e ldb:ldb.c/"ldb_request" - make "ldb_request" always return an error string
via f2a3125 ldb:ldb.c - "ldb_set_errstring" can be implemented by using "ldb_asprintf_errstring"
via 0f41868 ldb:ldb_autotransaction_request - fix a typo in a comment
from 4549862 gensec: trim header includes back to what is actually required
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit fea02ce1771ddb2ee09a442a86def72a01b9582e
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Wed Sep 21 11:45:32 2011 +0200
ldb:ldb_autotransaction_request - error string shouldn't be set here
A generic error string should be set independently of the access
mechanism to an LDB operation. Hence it should be handled in "ldb_wait"
and "ldb_request"
Signed-off-by: Andrew Tridgell <tridge at samba.org>
Autobuild-User: Andrew Tridgell <tridge at samba.org>
Autobuild-Date: Tue Oct 11 10:15:18 CEST 2011 on sn-devel-104
commit 21d053d120cbc665ed8c0afe82598220a608f2af
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Tue Sep 20 17:41:10 2011 +0200
ldb:pyldb.c - py_ldb_* modification calls - error string shouldn't be set here
As discussed with Jelmer, we shouldn't be setting a generic LDB error string
only for the Python bindings alone. This should be done in "ldb_request"
and "ldb_wait" - the common place for all possible LDB access mechanisms.
Signed-off-by: Andrew Tridgell <tridge at samba.org>
commit 96a9f823edd9c9387d6708fa8c3a4dc5de75127d
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Wed Sep 21 11:59:06 2011 +0200
s4:ldap_backend.c/"map_ldb_error" - handle errors similar to "PyErr_SetLdbError"
If the call was done using an error string ("add_err_string"), then use that one
without an additional "ldb_strerror()" for the definitive LDAP output.
Otherwise generate one using "ldb_strerror()".
This omits redundancies in the error string generation (twice the same
information by "ldb_strerror()").
Signed-off-by: Andrew Tridgell <tridge at samba.org>
commit 7599d59d1afd0814c14953a830ba4a618187e95e
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Wed Sep 21 12:54:08 2011 +0200
ldb:ldb.c/"ldb_wait" - make "ldb_wait" always return an error string
Signed-off-by: Andrew Tridgell <tridge at samba.org>
commit 500d1ba546ff3a677f0a48edc233daeed4d1fe41
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Wed Sep 21 12:38:46 2011 +0200
ldb:ldb.c/"ldb_wait" - change "ldb_wait" slightly in order to introduce error messages
In this occasion remove a redundant check for "LDB_ASYNC_DONE":
if (handle->state == LDB_ASYNC_DONE || if (handle->state == LDB_ASYNC_DONE)
handle->status != LDB_SUCCESS) { return handle->status;
return handle->status; == if (handle->status != LDB_SUCCESS)
} return handle->status;
... ...
return LDB_SUCCESS; return LDB_SUCCESS;
Signed-off-by: Andrew Tridgell <tridge at samba.org>
commit 8cab94e827df1ecbb03cd91467be41feece8c6e5
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Wed Sep 21 12:35:20 2011 +0200
ldb:ldb.c/"ldb_request" - make "ldb_request" always return an error string
Signed-off-by: Andrew Tridgell <tridge at samba.org>
commit f2a3125dcb081d8771bbcd09607592fa9cbef028
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Wed Sep 21 13:43:29 2011 +0200
ldb:ldb.c - "ldb_set_errstring" can be implemented by using "ldb_asprintf_errstring"
Signed-off-by: Andrew Tridgell <tridge at samba.org>
commit 0f41868691ebee9c996bb4dcd44a95833349848b
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Wed Sep 21 11:38:59 2011 +0200
ldb:ldb_autotransaction_request - fix a typo in a comment
Signed-off-by: Andrew Tridgell <tridge at samba.org>
-----------------------------------------------------------------------
Summary of changes:
lib/ldb/common/ldb.c | 91 ++++++++++++++++++++++++++---------
lib/ldb/pyldb.c | 18 +-------
source4/ldap_server/ldap_backend.c | 8 +--
3 files changed, 70 insertions(+), 47 deletions(-)
Changeset truncated at 500 lines:
diff --git a/lib/ldb/common/ldb.c b/lib/ldb/common/ldb.c
index a4c04ce..cd6172a 100644
--- 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)
{
- 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;
- char *old_string = NULL;
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);
- 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)
@@ -546,7 +543,7 @@ int ldb_transaction_cancel_noerr(struct ldb_context *ldb)
}
-/* autostarts a transacion if none active */
+/* autostarts a transaction if none active */
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);
- 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;
}
@@ -581,26 +573,41 @@ int ldb_wait(struct ldb_handle *handle, enum ldb_wait_type type)
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->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 LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(handle->ldb);
}
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;
@@ -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) {
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_operr(handle->ldb);
}
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;
+ 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;
@@ -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);
- 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);
@@ -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) {
+ /*
+ * "ldb_msg_check_element_flags" generates an error
+ * string
+ */
return ret;
}
ret = module->ops->modify(module, req);
@@ -906,6 +943,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;
}
diff --git a/lib/ldb/pyldb.c b/lib/ldb/pyldb.c
index dbdfe77..673cee2 100644
--- a/lib/ldb/pyldb.c
+++ b/lib/ldb/pyldb.c
@@ -995,17 +995,13 @@ static PyObject *py_ldb_modify(PyLdbObject *self, PyObject *args, PyObject *kwar
ret = ldb_request(ldb_ctx, req);
if (ret == LDB_SUCCESS) {
- ret = ldb_wait(req->handle, LDB_WAIT_ALL);
+ ret = ldb_wait(req->handle, LDB_WAIT_ALL);
}
if (ret == LDB_SUCCESS) {
ret = ldb_transaction_commit(ldb_ctx);
} else {
ldb_transaction_cancel(ldb_ctx);
- if (ldb_ctx->err_string == NULL) {
- /* no error string was setup by the backend */
- ldb_asprintf_errstring(ldb_ctx, "%s (%d)", ldb_strerror(ret), ret);
- }
}
talloc_free(mem_ctx);
@@ -1152,10 +1148,6 @@ static PyObject *py_ldb_add(PyLdbObject *self, PyObject *args, PyObject *kwargs)
ret = ldb_transaction_commit(ldb_ctx);
} else {
ldb_transaction_cancel(ldb_ctx);
- if (ldb_ctx->err_string == NULL) {
- /* no error string was setup by the backend */
- ldb_asprintf_errstring(ldb_ctx, "%s (%d)", ldb_strerror(ret), ret);
- }
}
talloc_free(mem_ctx);
@@ -1227,10 +1219,6 @@ static PyObject *py_ldb_delete(PyLdbObject *self, PyObject *args, PyObject *kwar
ret = ldb_transaction_commit(ldb_ctx);
} else {
ldb_transaction_cancel(ldb_ctx);
- if (ldb_ctx->err_string == NULL) {
- /* no error string was setup by the backend */
- ldb_asprintf_errstring(ldb_ctx, "%s (%d)", ldb_strerror(ret), ret);
- }
}
talloc_free(mem_ctx);
@@ -1310,10 +1298,6 @@ static PyObject *py_ldb_rename(PyLdbObject *self, PyObject *args, PyObject *kwar
ret = ldb_transaction_commit(ldb_ctx);
} else {
ldb_transaction_cancel(ldb_ctx);
- if (ldb_ctx->err_string == NULL) {
- /* no error string was setup by the backend */
- ldb_asprintf_errstring(ldb_ctx, "%s (%d)", ldb_strerror(ret), ret);
- }
}
talloc_free(mem_ctx);
diff --git a/source4/ldap_server/ldap_backend.c b/source4/ldap_server/ldap_backend.c
index 57f81ea..afeb350 100644
--- a/source4/ldap_server/ldap_backend.c
+++ b/source4/ldap_server/ldap_backend.c
@@ -169,12 +169,8 @@ static int map_ldb_error(TALLOC_CTX *mem_ctx, int ldb_err,
}
*errstring = talloc_asprintf(mem_ctx, "%08X: %s", W_ERROR_V(err),
- ldb_strerror(ldb_err));
- if (add_err_string != NULL) {
- *errstring = talloc_asprintf(mem_ctx, "%s - %s", *errstring,
- add_err_string);
- }
-
+ add_err_string != NULL ? add_err_string : ldb_strerror(ldb_err));
+
/* result is 1:1 for now */
return ldb_err;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list