[PATCH] vfs_fruit: enabling AAPL extensions must be a global switch

Ralph Böhme slow at samba.org
Tue Feb 28 11:30:52 UTC 2017


Hi!

Attached is a fix for bug
https://bugzilla.samba.org/show_bug.cgi?id=12604

Doesn't conflict with the large fruit patchset you're currently reviewing, so
could go in before or afterwards.

Please review&push if happy. Thanks!

Cheerio!
-slow
-------------- next part --------------
From d2f8ede1099c27296184e3238dd871ec41feb8f0 Mon Sep 17 00:00:00 2001
From: Ralph Boehme <slow at samba.org>
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 <slow at samba.org>
---
 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



More information about the samba-technical mailing list