From d2f8ede1099c27296184e3238dd871ec41feb8f0 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Tue, 28 Feb 2017 09:39:37 +0100 Subject: [PATCH] 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 --- source3/modules/vfs_fruit.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c index 25764e6..cc39d39 100644 --- a/source3/modules/vfs_fruit.c +++ b/source3/modules/vfs_fruit.c @@ -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; @@ -2228,7 +2232,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; @@ -4944,7 +4948,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 @@ -5021,7 +5025,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); } -- 2.9.3