summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2009-06-05 20:02:21 +0200
committerStefan Metzmacher <metze@samba.org>2009-06-05 20:17:43 +0200
commit76acd7bfad6b1853d73d27f62396aa6ce541f269 (patch)
tree8d8c5dd5bbde3899f3a4e8cbabba21d4b357e951 /source3/smbd
parentee83d1aead1a166af9554709d5e1c522d9c147cb (diff)
downloadsamba-76acd7bfad6b1853d73d27f62396aa6ce541f269.tar.gz
samba-76acd7bfad6b1853d73d27f62396aa6ce541f269.tar.bz2
samba-76acd7bfad6b1853d73d27f62396aa6ce541f269.zip
s3:smbd: keep the chain_fsp for SMB2 requests
metze
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/globals.h2
-rw-r--r--source3/smbd/smb2_create.c2
-rw-r--r--source3/smbd/smb2_glue.c1
3 files changed, 5 insertions, 0 deletions
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index db19a3a108..581e5b197f 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -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];
diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c
index 5d379ec3a5..d1472d5361 100644
--- a/source3/smbd/smb2_create.c
+++ b/source3/smbd/smb2_create.c
@@ -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)) {
diff --git a/source3/smbd/smb2_glue.c b/source3/smbd/smb2_glue.c
index c3c38542a0..5fa3bd2249 100644
--- a/source3/smbd/smb2_glue.c
+++ b/source3/smbd/smb2_glue.c
@@ -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;
}