From 603d4538716a8c05aa200bfa057d0c0ba3e0f71c Mon Sep 17 00:00:00 2001 From: Ira Cooper Date: Thu, 20 May 2010 11:13:37 -0400 Subject: [PATCH] s3: added support for fake oplocks in SMB2. --- source3/smbd/smb2_create.c | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c index 25e995c..a73561d 100644 --- a/source3/smbd/smb2_create.c +++ b/source3/smbd/smb2_create.c @@ -416,9 +416,17 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx, int info; struct timespec write_time_ts; struct smb2_create_blobs out_context_blobs; + int fake_in_oplock_level; ZERO_STRUCT(out_context_blobs); + if(lp_fake_oplocks(SNUM(smb2req->tcon->compat_conn))) { + fake_in_oplock_level = NO_OPLOCK; + } else { + fake_in_oplock_level = in_oplock_level; + } + + if (!smb2req->async) { /* New create call. */ req = tevent_req_create(mem_ctx, &state, @@ -690,7 +698,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx, in_create_disposition, in_create_options, in_file_attributes, - map_smb2_oplock_levels_to_samba(in_oplock_level), + map_smb2_oplock_levels_to_samba(fake_in_oplock_level), allocation_size, 0, /* private_flags */ sec_desc, @@ -756,7 +764,11 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx, smb2req->compat_chain_fsp = smb1req->chain_fsp; - state->out_oplock_level = map_samba_oplock_levels_to_smb2(result->oplock_type); + if(lp_fake_oplocks(SNUM(smb2req->tcon->compat_conn))) { + state->out_oplock_level = in_oplock_level; + } else { + state->out_oplock_level = map_samba_oplock_levels_to_smb2(result->oplock_type); + } if ((in_create_disposition == FILE_SUPERSEDE) && (info == FILE_WAS_OVERWRITTEN)) { -- 1.7.1