The branch, master has been updated via b25f7d4 torture: desactivate the level 4 tests for DFS referral via 29a03cd s4-dfs: Add workaround so that XP really works well from 192198a s3-modules: Fix the build of gpfs.c on RHEL 6.0 with gpfs 3.4.0-4
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit b25f7d4020276c199b29597ba4c575d9f8f8a4e3 Author: Matthieu Patou <m...@matws.net> Date: Wed May 18 08:44:05 2011 +0400 torture: desactivate the level 4 tests for DFS referral Autobuild-User: Matthieu Patou <m...@samba.org> Autobuild-Date: Wed May 18 13:04:00 CEST 2011 on sn-devel-104 commit 29a03cdbc297460415b27a5acc8ecfb7240cd2b4 Author: Matthieu Patou <m...@matws.net> Date: Wed May 18 01:14:24 2011 +0400 s4-dfs: Add workaround so that XP really works well XP seems to have problems working at a correct speed (or even working at all if we return referral of level 4). ----------------------------------------------------------------------- Summary of changes: source4/smb_server/smb/trans2.c | 31 ++++++++++++++++++------------- source4/torture/dfs/domaindfs.c | 19 +++++++++++++++++-- 2 files changed, 35 insertions(+), 15 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/smb_server/smb/trans2.c b/source4/smb_server/smb/trans2.c index 1637123..b3aa690 100644 --- a/source4/smb_server/smb/trans2.c +++ b/source4/smb_server/smb/trans2.c @@ -868,21 +868,13 @@ static NTSTATUS fill_normal_dfs_referraltype(struct dfs_referral_type *ref, const char *server_path, int isfirstoffset) { ZERO_STRUCTP(ref); - ref->version = version; - switch (version) { - case 3: - ref->referral.v3.server_type = DFS_SERVER_NON_ROOT; - /* "normal" referral seems to always include the GUID */ - ref->referral.v3.size = 34; - - ref->referral.v3.entry_flags = 0; - ref->referral.v3.ttl = 600; /* As w2k3 */ - ref->referral.v3.referrals.r1.DFS_path = talloc_strdup(ref, dfs_path); - ref->referral.v3.referrals.r1.DFS_alt_path = talloc_strdup(ref, dfs_path); - ref->referral.v3.referrals.r1.netw_address = talloc_strdup(ref, server_path); - return NT_STATUS_OK; case 4: + version = 3; +# if 0 + /* For the moment there is a bug with XP that don't seems to appriciate much + * level4 so we return just level 3 for everyone + */ ref->referral.v4.server_type = DFS_SERVER_NON_ROOT; /* "normal" referral seems to always include the GUID */ ref->referral.v4.size = 34; @@ -895,6 +887,19 @@ static NTSTATUS fill_normal_dfs_referraltype(struct dfs_referral_type *ref, ref->referral.v4.referrals.r1.DFS_alt_path = talloc_strdup(ref, dfs_path); ref->referral.v4.referrals.r1.netw_address = talloc_strdup(ref, server_path); return NT_STATUS_OK; +#endif + case 3: + ref->version = version; + ref->referral.v3.server_type = DFS_SERVER_NON_ROOT; + /* "normal" referral seems to always include the GUID */ + ref->referral.v3.size = 34; + + ref->referral.v3.entry_flags = 0; + ref->referral.v3.ttl = 600; /* As w2k3 */ + ref->referral.v3.referrals.r1.DFS_path = talloc_strdup(ref, dfs_path); + ref->referral.v3.referrals.r1.DFS_alt_path = talloc_strdup(ref, dfs_path); + ref->referral.v3.referrals.r1.netw_address = talloc_strdup(ref, server_path); + return NT_STATUS_OK; } return NT_STATUS_INVALID_LEVEL; } diff --git a/source4/torture/dfs/domaindfs.c b/source4/torture/dfs/domaindfs.c index fafae17..4914217 100644 --- a/source4/torture/dfs/domaindfs.c +++ b/source4/torture/dfs/domaindfs.c @@ -380,7 +380,11 @@ static bool test_getsysvolreferral(struct torture_context *tctx, "Wrong DFS_path %s unable to find substring %s in it", resp3.referral_entries[0].referral.v3.referrals.r1.netw_address, str+1)); - +#if 0 + /* + * Due to strange behavior with XP and level 4 + * we are obliged to degrade to level 3 ... + */ r3.in.req.max_referral_level = 4; torture_assert_ntstatus_ok(tctx, @@ -394,6 +398,17 @@ static bool test_getsysvolreferral(struct torture_context *tctx, torture_assert_int_equal(tctx, memcmp(resp3.referral_entries[0].referral.v3.service_site_guid.value, zeros, 16), 0, talloc_asprintf(tctx, "Service_site_guid is not NULL as expected")); +#endif + r3.in.req.max_referral_level = 4; + + torture_assert_ntstatus_ok(tctx, + dfs_cli_do_call(cli->tree, &r3), + "Get sysvol Domain referral failed"); + + torture_assert_int_equal(tctx, resp3.referral_entries[0].version, 3, + talloc_asprintf(tctx, + "Not expected version for referral entry 0 got %d expected 3 in degraded mode", + resp3.referral_entries[0].version)); #if 0 /* * We do not support fallback indication for the moment @@ -401,12 +416,12 @@ static bool test_getsysvolreferral(struct torture_context *tctx, torture_assert_int_equal(tctx, resp3.header_flags, DFS_HEADER_FLAG_STORAGE_SVR | DFS_HEADER_FLAG_TARGET_BCK, "Header flag different it's not a referral for a storage with fallback"); -#endif torture_assert_int_equal(tctx, resp3.referral_entries[0].referral.v4.entry_flags, DFS_FLAG_REFERRAL_FIRST_TARGET_SET, talloc_asprintf(tctx, "Wrong entry flag expected to have a non domain response and got %d", resp3.referral_entries[0].referral.v4.entry_flags)); +#endif return true; } -- Samba Shared Repository