SMB2 always have level2 oplock capability. Correct mapping from break messages to...
authorJeremy Allison <jra@samba.org>
Mon, 10 May 2010 21:23:44 +0000 (14:23 -0700)
committerJeremy Allison <jra@samba.org>
Mon, 10 May 2010 21:23:44 +0000 (14:23 -0700)
Jeremy.

source3/smbd/globals.h
source3/smbd/smb2_break.c
source3/smbd/smb2_create.c
source3/smbd/smb2_sesssetup.c

index b6aa704f18f57cc5ee2c18676bf51443c5d51e62..113e343c3eeb92d48606107438d1bbb8cc56e059 100644 (file)
@@ -324,7 +324,6 @@ void cancel_pending_lock_requests_by_fid_smb2(files_struct *fsp,
                        enum file_close_type close_type);
 /* From smbd/smb2_create.c */
 int map_smb2_oplock_levels_to_samba(uint8_t in_oplock_level);
-uint8_t map_samba_oplock_levels_to_smb2(int oplock_type);
 bool get_deferred_open_message_state_smb2(struct smbd_smb2_request *smb2req,
                        struct timeval *p_request_time,
                        void **pp_state);
index 7ef35749d2010457a47ae37b1f07a426bde49ae8..bd0fc566f03f594b469f63079c596b746981c011 100644 (file)
@@ -252,7 +252,9 @@ static NTSTATUS smbd_smb2_oplock_break_recv(struct tevent_req *req,
 
 void send_break_message_smb2(files_struct *fsp, int level)
 {
-       uint8_t smb2_oplock_level = map_samba_oplock_levels_to_smb2(level);
+       uint8_t smb2_oplock_level = (level == OPLOCKLEVEL_II) ?
+                               SMB2_OPLOCK_LEVEL_II :
+                               SMB2_OPLOCK_LEVEL_NONE;
        NTSTATUS status;
 
        DEBUG(10,("send_break_message_smb2: sending oplock break "
index 20359437fc23ab9519f0a70d59ecc87b3ca2cff5..eb8b2c527b11c80195a6ee12c876310c9c19872a 100644 (file)
@@ -46,7 +46,7 @@ int map_smb2_oplock_levels_to_samba(uint8_t in_oplock_level)
        }
 }
 
-uint8_t map_samba_oplock_levels_to_smb2(int oplock_type)
+static uint8_t map_samba_oplock_levels_to_smb2(int oplock_type)
 {
        if (BATCH_OPLOCK_TYPE(oplock_type)) {
                return SMB2_OPLOCK_LEVEL_BATCH;
index c79a443892adc0342a3aa188ded63fa55f61de65..54f9b0ea99b68c8c2d6e91614b01d0defecf75f7 100644 (file)
@@ -332,6 +332,8 @@ static NTSTATUS smbd_smb2_session_setup(struct smbd_smb2_request *req,
        }
 
        *out_session_id = session->vuid;
+
+       global_client_caps |= (CAP_LEVEL_II_OPLOCKS|CAP_STATUS32);
        return status;
 }