1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

vfs_fruit: enabling AAPL extensions must be a global switch

Apple's SMB2 AAPL extension is enabled once per SMB2
connection. Unfortunately the (per se correct) fix for bug #12541
results in vfs_fruit checking a per tcon config state variable to
determine whether AAPL has been negotiated. This variable will be false
for all but the first tcon. We must make it a global variable.

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

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Uri Simchoni <uri@samba.org>

Autobuild-User(master): Uri Simchoni <uri@samba.org>
Autobuild-Date(master): Thu Mar  2 04:34:10 CET 2017 on sn-devel-144
This commit is contained in:
Ralph Boehme 2017-02-28 09:39:37 +01:00 committed by Uri Simchoni
parent 708767da8c
commit 41204a4972

View File

@ -94,6 +94,11 @@
static int vfs_fruit_debug_level = DBGC_VFS;
static struct global_fruit_config {
bool nego_aapl; /* client negotiated AAPL */
} global_fruit_config;
#undef DBGC_CLASS
#define DBGC_CLASS vfs_fruit_debug_level
@ -124,7 +129,6 @@ struct fruit_config_data {
enum fruit_locking locking;
enum fruit_encoding encoding;
bool use_aapl; /* config from smb.conf */
bool nego_aapl; /* client negotiated AAPL */
bool use_copyfile;
bool readdir_attr_enabled;
bool unix_info_enabled;
@ -2231,7 +2235,7 @@ static NTSTATUS check_aapl(vfs_handle_struct *handle,
SMB2_CREATE_TAG_AAPL,
blob);
if (NT_STATUS_IS_OK(status)) {
config->nego_aapl = true;
global_fruit_config.nego_aapl = true;
}
return status;
@ -4933,7 +4937,7 @@ static NTSTATUS fruit_create_file(vfs_handle_struct *handle,
fsp = *result;
if (config->nego_aapl) {
if (global_fruit_config.nego_aapl) {
if (config->copyfile_enabled) {
/*
* Set a flag in the fsp. Gets used in
@ -5010,7 +5014,7 @@ static NTSTATUS fruit_readdir_attr(struct vfs_handle_struct *handle,
struct fruit_config_data,
return NT_STATUS_UNSUCCESSFUL);
if (!config->nego_aapl) {
if (!global_fruit_config.nego_aapl) {
return SMB_VFS_NEXT_READDIR_ATTR(handle, fname, mem_ctx, pattr_data);
}