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

Reply via email to