svn commit: samba r12534 - in branches/SAMBA_4_0/source/lib/ldb/common: .

abartlet at samba.org abartlet at samba.org
Wed Dec 28 04:14:59 GMT 2005


Author: abartlet
Date: 2005-12-28 04:14:58 +0000 (Wed, 28 Dec 2005)
New Revision: 12534

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12534

Log:
Make the transaction code fill the error string on failure.

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/lib/ldb/common/ldb.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/ldb/common/ldb.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/common/ldb.c	2005-12-28 03:57:26 UTC (rev 12533)
+++ branches/SAMBA_4_0/source/lib/ldb/common/ldb.c	2005-12-28 04:14:58 UTC (rev 12534)
@@ -126,13 +126,22 @@
 int ldb_transaction_start(struct ldb_context *ldb)
 {
 	struct ldb_module *module;
+	int status;
 	FIRST_OP(ldb, start_transaction);
 	
 	ldb->transaction_active++;
 
 	ldb_reset_err_string(ldb);
 
-	return module->ops->start_transaction(module);
+	status = module->ops->start_transaction(module);
+	if (status != LDB_SUCCESS) {
+		if (ldb->err_string == NULL) {
+			/* no error string was setup by the backend */
+			ldb_set_errstring(ldb->modules, 
+					  talloc_asprintf(ldb, "ldb transaction start error %d", status));
+		}
+	}
+	return status;
 }
 
 /*
@@ -141,6 +150,7 @@
 int ldb_transaction_commit(struct ldb_context *ldb)
 {
 	struct ldb_module *module;
+	int status;
 	FIRST_OP(ldb, end_transaction);
 
 	if (ldb->transaction_active > 0) {
@@ -151,7 +161,15 @@
 
 	ldb_reset_err_string(ldb);
 
-	return module->ops->end_transaction(module);
+	status = module->ops->end_transaction(module);
+	if (status != LDB_SUCCESS) {
+		if (ldb->err_string == NULL) {
+			/* no error string was setup by the backend */
+			ldb_set_errstring(ldb->modules, 
+					  talloc_asprintf(ldb, "ldb transaction commit error %d", status));
+		}
+	}
+	return status;
 }
 
 /*
@@ -160,6 +178,7 @@
 int ldb_transaction_cancel(struct ldb_context *ldb)
 {
 	struct ldb_module *module;
+	int status;
 	FIRST_OP(ldb, del_transaction);
 
 	if (ldb->transaction_active > 0) {
@@ -168,7 +187,15 @@
 		return LDB_ERR_OPERATIONS_ERROR;
 	}
 
-	return module->ops->del_transaction(module);
+	status = module->ops->del_transaction(module);
+	if (status != LDB_SUCCESS) {
+		if (ldb->err_string == NULL) {
+			/* no error string was setup by the backend */
+			ldb_set_errstring(ldb->modules, 
+					  talloc_asprintf(ldb, "ldb transaction cancel error %d", status));
+		}
+	}
+	return status;
 }
 
 /*



More information about the samba-cvs mailing list