]> arthur.barton.de Git - netatalk.git/commitdiff
Add support for AFP 3.4
authorRalph Boehme <sloowfranklin@gmail.com>
Thu, 7 Nov 2013 11:29:57 +0000 (12:29 +0100)
committerRalph Boehme <sloowfranklin@gmail.com>
Thu, 7 Nov 2013 11:29:57 +0000 (12:29 +0100)
NEWS
etc/afpd/auth.c
etc/afpd/auth.h
libatalk/vfs/ea_sys.c

diff --git a/NEWS b/NEWS
index e53f613474ecb63c5ff21133e68a83950432fc87..f9e4f3033153e3f3fd41fdbf579d86cfb7eb4e9c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@ Changes in 3.1.1
 * FIX: Fix ressource fork name conversion. Bug #534.
 * FIX: Fix a bug where only the first configured UAM was loaded.
        Bug #537.
+* UPD: Add support for AFP 3.4. From FR #85.
 
 Changes in 3.1.0
 ================
index b4adf555092af6d19f92340449306400649f0dfd..8011b56b6fbabe68c0d2f71e935e4f6921637cb1 100644 (file)
@@ -170,6 +170,7 @@ static int set_auth_switch(const AFPObj *obj, int expired)
         afp_switch = postauth_switch;
         switch (obj->afp_version) {
 
+        case 34:
         case 33:
         case 32:
 #ifdef HAVE_ACLS
@@ -228,8 +229,8 @@ static int login(AFPObj *obj, struct passwd *pwd, void (*logout)(void), int expi
         return AFPERR_MAXSESS;
     }
 
-    LOG(log_note, logtype_afpd, "%s Login by %s",
-        afp_versions[afp_version_index].av_name, pwd->pw_name);
+    LOG(log_note, logtype_afpd, "Login by %s (%s)",
+        pwd->pw_name, afp_versions[afp_version_index].av_name);
 
     if (set_groups(obj, pwd) != 0)
         return AFPERR_BADUAM;
index 2e9d6a584e3f66a94166f9337f49e296d8ac61b0..f53513b6a7f34a4d5b37abd09607d2c9a51e9e2e 100644 (file)
@@ -20,7 +20,8 @@ static const struct afp_versions  afp_versions[] = {
     { "AFPX03", 30 },
     { "AFP3.1", 31 },
     { "AFP3.2", 32 },
-    { "AFP3.3", 33 }
+    { "AFP3.3", 33 },
+    { "AFP3.4", 34 }
 };
 
 /* for GetUserInfo */
index 374248bc8a9e4696eedf28519aeeec5a80fa7761..91e13e36ef69ea8074d7d23cd35e3b225ffeff02 100644 (file)
@@ -313,8 +313,13 @@ int sys_set_ea(VFS_FUNC_ARGS_EA_SET)
             LOG(log_debug, logtype_afpd, "sys_set_ea(\"%s/%s\", ea:'%s'): EA already exists",
                 getcwdpath(), uname, attruname);
             return AFPERR_EXIST;
+        case ENOATTR:
+        case ENOENT:
+            if ((attr_flag & XATTR_REPLACE) && (vol->v_obj->afp_version >= 34))
+                return AFPERR_NOITEM;
+            return AFPERR_MISC;
         default:
-            LOG(log_error, logtype_afpd, "sys_set_ea(\"%s/%s\", ea:'%s', size: %u, flags: %s|%s|%s): %s",
+            LOG(log_debug, logtype_afpd, "sys_set_ea(\"%s/%s\", ea:'%s', size: %u, flags: %s|%s|%s): %s",
                 getcwdpath(), uname, attruname, attrsize, 
                 oflag & O_CREAT ? "XATTR_CREATE" : "-",
                 oflag & O_TRUNC ? "XATTR_REPLACE" : "-",