s3:smbd: add a optional_support helper variable to reply_tcon_and_X() save-diskspace-tags/ldb-1.1.9
authorStefan Metzmacher <metze@samba.org>
Wed, 1 Aug 2012 10:01:07 +0000 (12:01 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 1 Aug 2012 16:25:26 +0000 (18:25 +0200)
metze

Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Wed Aug  1 18:25:26 CEST 2012 on sn-devel-104

source3/smbd/reply.c

index dfb279db61bf2e403e383d82a6a71fdc3b27b0bc..a89338082f60f995d74ad2f43c02e52b0e816813 100644 (file)
@@ -840,6 +840,7 @@ void reply_tcon_and_X(struct smb_request *req)
        } else {
                /* NT sets the fstype of IPC$ to the null string */
                const char *fstype = IS_IPC(conn) ? "" : lp_fstype(ctx, SNUM(conn));
+               uint16_t optional_support = 0;
 
                if (tcon_flags & TCONX_FLAG_EXTENDED_RESPONSE) {
                        /* Return permissions. */
@@ -872,15 +873,17 @@ void reply_tcon_and_X(struct smb_request *req)
 
                /* what does setting this bit do? It is set by NT4 and
                   may affect the ability to autorun mounted cdroms */
-               SSVAL(req->outbuf, smb_vwv2, SMB_SUPPORT_SEARCH_BITS|
-                     (lp_csc_policy(SNUM(conn)) << 2));
+               optional_support |= SMB_SUPPORT_SEARCH_BITS;
+               optional_support |=
+                       (lp_csc_policy(SNUM(conn)) << SMB_CSC_POLICY_SHIFT);
 
                if (lp_msdfs_root(SNUM(conn)) && lp_host_msdfs()) {
                        DEBUG(2,("Serving %s as a Dfs root\n",
                                 lp_servicename(ctx, SNUM(conn)) ));
-                       SSVAL(req->outbuf, smb_vwv2,
-                             SMB_SHARE_IN_DFS | SVAL(req->outbuf, smb_vwv2));
+                       optional_support |= SMB_SHARE_IN_DFS;
                }
+
+               SSVAL(req->outbuf, smb_vwv2, optional_support);
        }
 
        SSVAL(req->outbuf, smb_vwv0, 0xff); /* andx chain ends */