svn commit: samba r9857 - in branches/SAMBA_4_0: source/lib/ldb/modules source/lib/samba3 testprogs/ejs

jelmer at samba.org jelmer at samba.org
Thu Sep 1 01:11:16 GMT 2005


Author: jelmer
Date: 2005-09-01 01:11:15 +0000 (Thu, 01 Sep 2005)
New Revision: 9857

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

Log:
Fix rename/delete issues

Modified:
   branches/SAMBA_4_0/source/lib/ldb/modules/ldb_map.c
   branches/SAMBA_4_0/source/lib/samba3/PLAN
   branches/SAMBA_4_0/testprogs/ejs/samba3sam


Changeset:
Modified: branches/SAMBA_4_0/source/lib/ldb/modules/ldb_map.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/modules/ldb_map.c	2005-09-01 01:06:51 UTC (rev 9856)
+++ branches/SAMBA_4_0/source/lib/ldb/modules/ldb_map.c	2005-09-01 01:11:15 UTC (rev 9857)
@@ -725,19 +725,26 @@
 {
 	struct ldb_map_context *privdat = map_get_privdat(module);
 	struct ldb_dn *n_olddn, *n_newdn;
-	int ret;
-
-	ret = ldb_next_rename_record(module, n_olddn, n_newdn);
-
+	int fb_ret, mp_ret;
+	
 	n_olddn = map_local_dn(module, module, olddn);
 	n_newdn = map_local_dn(module, module, newdn);
 
-	ret = ldb_rename(privdat->mapped_ldb, n_olddn, n_newdn);
+	mp_ret = ldb_rename(privdat->mapped_ldb, n_olddn, n_newdn);
+	if (mp_ret != -1) {
+		ldb_debug(module->ldb, LDB_DEBUG_TRACE, "Mapped record renamed");
+	}
 
+	fb_ret = ldb_next_rename_record(module, olddn, newdn);
+	
+	if (fb_ret != -1) {
+		ldb_debug(module->ldb, LDB_DEBUG_TRACE, "Fallback record renamed");
+	}
+
 	talloc_free(n_olddn);
 	talloc_free(n_newdn);
 	
-	return ret;
+	return (fb_ret == -1 && mp_ret == -1)?-1:0;
 }
 
 /*
@@ -747,17 +754,23 @@
 {
 	struct ldb_map_context *privdat = map_get_privdat(module);
 	struct ldb_dn *newdn;
-	int ret;
+	int fb_ret, mp_ret;
 
-	ret = ldb_next_delete_record(module, dn);
-	
 	newdn = map_local_dn(module, module, dn);
 
-	ldb_delete(privdat->mapped_ldb, newdn);
+	mp_ret = ldb_delete(privdat->mapped_ldb, newdn);
+	if (mp_ret != -1) {
+		ldb_debug(module->ldb, LDB_DEBUG_TRACE, "Mapped record deleted");
+	}
 
+	fb_ret = ldb_next_delete_record(module, dn);
+	if (fb_ret != -1) {
+		ldb_debug(module->ldb, LDB_DEBUG_TRACE, "Fallback record deleted");
+	}
+
 	talloc_free(newdn);
 
-	return ret;
+	return (fb_ret == -1 && mp_ret == -1)?-1:0;
 }
 
 /* search fallback database */

Modified: branches/SAMBA_4_0/source/lib/samba3/PLAN
===================================================================
--- branches/SAMBA_4_0/source/lib/samba3/PLAN	2005-09-01 01:06:51 UTC (rev 9856)
+++ branches/SAMBA_4_0/source/lib/samba3/PLAN	2005-09-01 01:11:15 UTC (rev 9857)
@@ -1,4 +1,3 @@
 TODO (SoC project):
  - [ldb_map] some more strict checking when sending data to an LDAP server
- - [ldb_map] fix rename
  - fix ntPwdHash / lmPwdHash bug

Modified: branches/SAMBA_4_0/testprogs/ejs/samba3sam
===================================================================
--- branches/SAMBA_4_0/testprogs/ejs/samba3sam	2005-09-01 01:06:51 UTC (rev 9856)
+++ branches/SAMBA_4_0/testprogs/ejs/samba3sam	2005-09-01 01:11:15 UTC (rev 9857)
@@ -164,21 +164,18 @@
 assert(msg[0].description == undefined);
 
 println("Renaming record...");
-ok = s4.rename("cn=Niemand,ou=Tests,dc=vernstok,dc=nl", "cn=Iemand,ou=Tests,dc=vernstok,dc=nl");
+ok = s4.rename("cn=Niemand,ou=Tests,dc=vernstok,dc=nl", "cn=Niemand,dc=vernstok,dc=nl");
 
-println("Checking whether old record is gone...");
+println("Checking whether DN has changed...");
 msg = s4.search("(cn=Niemand)");
-assert(msg.length == 0);
-
-println("Checking whether new record is there...");
-msg = s4.search("(cn=Iemand)");
 assert(msg.length == 1);
+assert(msg[0].dn == "cn=Niemand,dc=vernstok,dc=nl");
 
 println("Deleting record...");
-ok = s4.del("cn=Iemand,ou=Tests,dc=vernstok,dc=nl");
+ok = s4.del("cn=Niemand,dc=vernstok,dc=nl");
 assert(ok);
 
 println("Checking whether record is gone...");
-msg = s4.search("(cn=Iemand)");
+msg = s4.search("(cn=Niemand)");
 assert(msg.length == 0);
 



More information about the samba-cvs mailing list