]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: smbd: leases - new torture test shows stat opens can get leases.
authorJeremy Allison <jra@samba.org>
Wed, 18 Feb 2015 19:48:31 +0000 (11:48 -0800)
committerKarolin Seeger <kseeger@samba.org>
Sun, 22 Feb 2015 13:19:07 +0000 (14:19 +0100)
Can also issue breaks on these leases.

https://bugzilla.samba.org/show_bug.cgi?id=11102

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Böhme <slow@samba.org>
(cherry picked from commit 2d3db5e7930af9dd2a70727b2f2828bd73a1ec3b)

source3/smbd/open.c

index 06770e04fb2a96db184e13e3aae8ccfc52c00566..773b146cd68fd31bb06a0372548691d845ea9ac0 100644 (file)
@@ -3099,7 +3099,8 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
 
        if (file_existed) {
                /*
-                * stat opens on existing files don't get oplocks or leases.
+                * stat opens on existing files don't get oplocks.
+                * They can get leases.
                 *
                 * Note that we check for stat open on the *open_access_mask*,
                 * i.e. the access mask we actually used to do the open,
@@ -3108,12 +3109,8 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
                 * FILE_OVERWRITE and FILE_OVERWRITE_IF add in O_TRUNC,
                 * which adds FILE_WRITE_DATA to open_access_mask.
                 */
-               if (is_stat_open(open_access_mask)) {
-                       if (lease) {
-                               lease->lease_state = SMB2_LEASE_NONE;
-                       } else {
-                               oplock_request = NO_OPLOCK;
-                       }
+               if (is_stat_open(open_access_mask) && lease == NULL) {
+                       oplock_request = NO_OPLOCK;
                }
        }