summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2007-12-30 13:10:29 -0800
committerJeremy Allison <jra@samba.org>2007-12-30 13:10:29 -0800
commitc6646f115ebca2fe8b05c898d3529832b3599056 (patch)
treed68ac3ebeed592bcd143b8b54ae83111a5165c4a
parentf04daa682acc2a9d5d660760b81dd353081ee84a (diff)
downloadsamba-c6646f115ebca2fe8b05c898d3529832b3599056.tar.gz
samba-c6646f115ebca2fe8b05c898d3529832b3599056.tar.bz2
samba-c6646f115ebca2fe8b05c898d3529832b3599056.zip
As the encryption is stream based there's no reason
oplock breaks can't be encrypted. If we have multiple contexts I should probably attach them to the connection struct, but for now use the global context number. Jeremy. (This used to be commit 5b4b335ed0d1dc738f1f099e5c638361f3aede07)
-rw-r--r--source3/smbd/oplock.c12
-rw-r--r--source3/smbd/seal.c9
2 files changed, 16 insertions, 5 deletions
diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c
index 2c3313606a..8a5b1f4ecd 100644
--- a/source3/smbd/oplock.c
+++ b/source3/smbd/oplock.c
@@ -252,11 +252,13 @@ static char *new_break_smb_message(TALLOC_CTX *mem_ctx,
}
memset(result,'\0',smb_size);
- /* We use cli_set_message here as this is an
- * asynchronous message that doesn't belong in
- * the stream.
- */
- cli_set_message(result,8,0,True);
+ if (!srv_encryption_on()) {
+ cli_set_message(result,8,0,true);
+ } else {
+ char inbuf[8];
+ smb_set_enclen(inbuf,4,srv_enc_ctx());
+ srv_set_message(inbuf,result,8,0,true);
+ }
SCVAL(result,smb_com,SMBlockingX);
SSVAL(result,smb_tid,fsp->conn->cnum);
SSVAL(result,smb_pid,0xFFFF);
diff --git a/source3/smbd/seal.c b/source3/smbd/seal.c
index 14a427bb9c..24ecb77fd5 100644
--- a/source3/smbd/seal.c
+++ b/source3/smbd/seal.c
@@ -48,6 +48,15 @@ bool srv_encryption_on(void)
}
/******************************************************************************
+ Return global enc context - this must change if we ever do multiple contexts.
+******************************************************************************/
+
+uint16 srv_enc_ctx(void)
+{
+ return srv_trans_enc_ctx->es->enc_ctx_num;
+}
+
+/******************************************************************************
Create an auth_ntlmssp_state and ensure pointer copy is correct.
******************************************************************************/