Ralph Boehme [Fri, 14 Feb 2014 10:31:57 +0000 (11:31 +0100)]
Automatic conversion for OS X ._ AppleDouble files, bug #550
Add automatic on-access conversion for ._ AppleDouble files created by
OS X to Netatalk's AppleDouble format.
OS X .AppleDouble files most of the times contain a FinderInfo
AppleDouble entry with a size larger then 32 bytes, containing packed
xattrs. Netatalk fails to cleanly deal with these and logs them as
"bogus entry id 9".
When the AFP client uses FPSetForkParms to set the ressource fork
length to 0, Netatalk will call unlink() in ad_rtruncate() in
libatalk/adouble/ad_write.c in order to to unlink the files
AppleDouble ressource fork.
The function ad_rtruncate() gets just the filename as path from the
caller, so obviously at this point the caller should have ensured that
it had called chdir() to the enclosing directory of the file.
Frank Lahm [Mon, 28 Oct 2013 09:06:37 +0000 (10:06 +0100)]
Build fixes for the Kerberos UAM
o missing Kerberos includes and libraries
o conditional code that handled the case when Kerberos is not available
was c/p from etc/afp/status.c and wasn't updated for the changes introduced
in the bugfix for #531
Frank Lahm [Fri, 25 Oct 2013 09:42:06 +0000 (11:42 +0200)]
Remove obsolete compatibility function declarations for snprintf() and vsnprintf()
We were providing function declarations without ever providing function implementations.
Also, for some reason, this caues compilation issues on older Linux versions.
Ralph Boehme [Sun, 13 Oct 2013 14:16:54 +0000 (16:16 +0200)]
New MySQL CNID backend
o add configure check --with-mysql-config=PATH that searches for
the mysql-config binary
o add new MySQL CNID subdirectory and compilation infrastructure
o modify CNID header files for new backend
o add private CNID MySQL header file for private data
o add mysql config options
o add MySQL args to cnid_open()
o add support for MySQL CNID backend to dbd
Add MySQL libraries as deps to executables:
workaround libtool bug where the rpath of a dependent library (ie mysql) of a libtool
library (ie libatalk) gets stripped from the link flags when linking the final
executable, even though the library (mysql) is a non default OS dir.
Ralph Boehme [Wed, 2 Oct 2013 07:39:20 +0000 (09:39 +0200)]
Add recvfile support with splice() on Linux
o Global option "recvfile" controls whether splice() is used.
Ddefaults to false.
o Global option "splice size" limits the amount of data spliced.
Defaults to 64k.
Ralph Boehme [Tue, 8 Oct 2013 10:36:25 +0000 (12:36 +0200)]
Fix error in ad_openat(), bug #532
Saving from Word to a folder that is a symlink to a folder on another filesystem
results in a crash of the afpd process and the save to fail. This happens only
if the option "follow symlinks" is enabled.
Ralph Boehme [Wed, 18 Sep 2013 09:08:38 +0000 (11:08 +0200)]
Small fix in the DSI tickle handling
Due to a regression introduced in 9355ebcc5744bbd445a0c8cb8b0a0ca201d5499a
the server may send an extra DSI tickle immediately after a "volume modified"
DSI attention notification. This will only happen if the connection is
o completely idle, and
o the volume was modified by another AFP client
The result is an extra DSI tickle every 30 seconds.
Ralph Boehme [Fri, 13 Sep 2013 10:19:56 +0000 (12:19 +0200)]
Option "vol dbnest"
When set to true, the CNID database for a volume is stored in the volume root
of a share in a directory .AppleDB like in Netatalk 2. Defaults to false.
HAT [Thu, 29 Aug 2013 11:40:27 +0000 (20:40 +0900)]
twisted u_name and m_name
Fix Bug#523.
Additional Info:
The following line in ofork.c may also be wrong.
/* Somone has used write_fork, we assume file was changed, register it to file change event api */
if (ofork->of_flags & AFPFORK_MODIFIED) {
struct dir *dir = dirlookup(ofork->of_vol, ofork->of_did);
bstring forkpath = bformat("%s/%s", bdata(dir->d_fullpath), of_name(ofork));
fce_register(FCE_FILE_MODIFY, bdata(forkpath), NULL, fce_file);
bdestroy(forkpath);
}
Ralph Boehme [Wed, 11 Sep 2013 09:38:11 +0000 (11:38 +0200)]
Fix handling of large number of volumes
o ensure only a maximum of 255 volumes is returned
o ensure the reply with the volume list fits in a certain buffer
size, testing with 10.8.4 saw the maximum size the client would
accept to be ~4600 bytes