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);
