summaryrefslogtreecommitdiff
path: root/source3/smbd/oplock.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-08-07 02:59:52 +0000
committerJeremy Allison <jra@samba.org>2003-08-07 02:59:52 +0000
commit110abf10d208769bf6bcfc0604874cb1bed0406a (patch)
tree6d858a20f96b11318095705040bdf416fd2b0cd6 /source3/smbd/oplock.c
parent4461109416e8dc42903e6990306d059b8837dd8e (diff)
downloadsamba-110abf10d208769bf6bcfc0604874cb1bed0406a.tar.gz
samba-110abf10d208769bf6bcfc0604874cb1bed0406a.tar.bz2
samba-110abf10d208769bf6bcfc0604874cb1bed0406a.zip
Turns out I had my packet sequences wrong for oplock break code.
I was storing the mid of the oplock break - I should have been storing the mid from the open. There are thus 2 types of deferred packet sequence returns - ones that increment the sequence number (returns from oplock causing opens) and ones that don't (change notify returns etc). Running with signing forced on does lead to some interesting tests :-). Jeremy. (This used to be commit 85907f02cec566502d9e4adabbd414020a26064d)
Diffstat (limited to 'source3/smbd/oplock.c')
-rw-r--r--source3/smbd/oplock.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c
index 19e6956d9e..49a1b7d8cf 100644
--- a/source3/smbd/oplock.c
+++ b/source3/smbd/oplock.c
@@ -743,6 +743,10 @@ static BOOL oplock_break(SMB_DEV_T dev, SMB_INO_T inode, unsigned long file_id,
/* Remember if we just sent a break to level II on this file. */
fsp->sent_oplock_break = using_levelII? LEVEL_II_BREAK_SENT:EXCLUSIVE_BREAK_SENT;
+ /* Ensure the reply for the open uses the correct sequence number. */
+ /* This isn't a real deferred packet as it's response will also increment
+ * the sequence. */
+ srv_defer_sign_response(get_current_mid(), False);
/* Save the server smb signing state. */
sign_state = srv_oplock_set_signing(False);