s3:smbd: keep the chain_fsp for SMB2 requests
authorStefan Metzmacher <metze@samba.org>
Fri, 5 Jun 2009 18:02:21 +0000 (20:02 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 5 Jun 2009 18:17:43 +0000 (20:17 +0200)
metze

source3/smbd/globals.h
source3/smbd/smb2_create.c
source3/smbd/smb2_glue.c

index db19a3a1081afba4d57b0a05ed7256853a36ee75..581e5b197f45fed16b1103f49ba506f796f07d4f 100644 (file)
@@ -227,6 +227,8 @@ struct smbd_smb2_request {
        int current_idx;
        bool do_signing;
 
+       struct files_struct *compat_chain_fsp;
+
        struct {
                /* the NBT header is not allocated */
                uint8_t nbt_hdr[4];
index 5d379ec3a5b566d9db353fe7a4d3a3712bf6b962..d1472d5361cde483f84a5d8d2bcbb2a8be88f850 100644 (file)
@@ -275,6 +275,8 @@ static NTSTATUS smbd_smb2_create(struct smbd_smb2_request *req,
                }
        }
 
+       req->compat_chain_fsp = smbreq->chain_fsp;
+
        *out_oplock_level       = 0;
        if ((in_create_disposition == FILE_SUPERSEDE)
            && (info == FILE_WAS_OVERWRITTEN)) {
index c3c38542a0d00fef36680d17df532120fa0a4fde..5fa3bd2249958bb0d7fd76cd94743f98282333d4 100644 (file)
@@ -46,6 +46,7 @@ struct smb_request *smbd_smb2_fake_smb_request(struct smbd_smb2_request *req)
        if (IVAL(inhdr, SMB2_HDR_FLAGS) & SMB2_HDR_FLAG_DFS) {
                smbreq->flags2 |= FLAGS2_DFS_PATHNAMES;
        }
+       smbreq->chain_fsp = req->compat_chain_fsp;
 
        return smbreq;
 }