Skip to content

0.9.5

Latest

Choose a tag to compare

@rdmark rdmark released this 07 Jul 21:04

Netatalk Client v0.9.5

Note: With this release version onwards, this project is now called Netatalk Client.
The names of tools and libraries are unchanged from afpfs-ng to signal continuity and (partial) compatibility.

AFP Client Library Improvements

  • Support for the SRP UAM (Secure Remote Password), which is the most modern and secure password-based authentication method in the AFP protocol: supported by Mac OS X 10.7 Lion, Netatalk 4.5 and later
  • Harden and bugfix libafpclient UAM handling code
  • We now detect 2000s era Mac OS X servers, Time Capsules, and Windows (SFM, PCMacLan) servers
  • Improved compatibility with modern Apple AFP servers and Time Capsule, including FinderInfo and ResourceFork handling,
    Time Capsule-friendly file creation and fork writes, and support for AFP file exchange operations used by safe-save workflows.
  • AFP connection attempts now respect a timeout instead of blocking indefinitely, with a longer default timeout for Time
    Capsule servers to tolerate disk spin-up.
  • Disable TCP Nagle on AFP connections for more responsive interactive and metadata-heavy workloads.

Stateless Client Library Improvements

  • Allow library consumers to register a persistent logging callback with context and syslog severity. Local libafpsl
    diagnostics and structured logs returned by every afpsld command use the same callback.
  • Add reusable metadata replacement and transfer helpers to libafpsl, with auto, filesystem-xattr,
    macOS AppleDouble, and Netatalk AppleDouble storage modes and non-fatal warning flags for non-interactive consumers.
  • Add stateless APIs for generic extended attributes, FinderInfo, and ResourceFork metadata.
  • Bind stateless volume operations to authenticated sessions and add explicit session resume support for long-lived
    clients such as KIO workers.

afpcmd Client Improvements

  • Pagination of long directory listings where we previously truncated the output at 256 entries.
  • Preserve FinderInfo, ResourceFork, and generic extended attributes when transferring files, with selectable local
    metadata storage modes.
  • Add xattr, finderinfo, and resourcefork commands for inspecting and modifying AFP metadata interactively.
  • Add per-command recursive mode for interactive get, put, cp, chmod, and rm commands.
  • Recover interactive sessions more reliably after idle server disconnects.
  • Escape control characters in path output so unusual server-side filenames cannot corrupt terminal output.

FUSE Client Improvements

  • Better macOS Finder compatibility through ResourceFork, FinderInfo, and generic extended attribute operations in
    macFUSE.
  • Support Darwin rename and exchange callbacks, including safer Finder-style save operations that preserve stable file
    IDs where the server supports AFP file exchange.
  • Restore reconnection after afp_client suspend and afp_client resume; suspended mounts now stay suspended until an
    explicit resume command.
  • Avoid daemon termination during FUSE wakeups and unmount handling on platforms where SIGPIPE could otherwise arrive
    before libfuse installs its own handler.

What's Changed

  • touch up codefm.sh script with return code and stderr redirection by @rdmark in #172
  • remove some unreachable code in the FUSE client by @rdmark in #184
  • restructure UAM code into separate files by @rdmark in #194
  • retry read/select on EINTR in FUSE client/daemon socket I/O by @rdmark in #197
  • add SRP User Authentication Method by @rdmark in #196
  • reduce log verbosity by guarding afp_main_loop debug logs with DEBUG macros by @rdmark in #201
  • fix use-after-free in afp_unmount_volume by detaching after FUSE unmount by @rdmark in #202
  • detect 2000s era Macs and Time Capsule machine types by @rdmark in #203
  • libafpclient: detect Windows hosts by machine name by @rdmark in #210
  • rebrand project to Netatalk Client by @rdmark in #223
  • refactor afp_client.1 man page for clarity by @rdmark in #224
  • replace commented out code with FIXMEs by @rdmark in #208
  • fuse: bound client response string appends by @rdmark in #225
  • bump libafpclient soversion to v1 by @rdmark in #227
  • declare soversion v1 for libafpsl shared library by @rdmark in #236
  • fix: add bounds check before memcpy in server.c by @orbisai0security in #233
  • lib: harden AFP reply block parsing by @rdmark in #237
  • handle SRP UAM login failed error by @rdmark in #238
  • remove redundant afpcmd internal URL parsing self tests by @rdmark in #242
  • compatibility with modern Apple AFP servers by @rdmark in #226
  • route Apple xattrs through fork metadata by @rdmark in #243
  • unified cleanup routine in appledouble_open to avoid memory leaks by @rdmark in #244
  • fuse: harden secrets management in the client mount helper by @rdmark in #245
  • introduce a global text sanitizer utility function by @rdmark in #246
  • fuse: harden manager IPC validation by @rdmark in #247
  • afpcmd: add per-command recursive operations by @rdmark in #248
  • fuse: safe status message construction by @rdmark in #249
  • full-featured logging interface over IPC for the Stateless library by @rdmark in #250
  • libafpsl: add reusable metadata transfer helpers by @rdmark in #254
  • bring protocol definitions up to date with AFP 3.4 by @rdmark in #256
  • harden client logging format handling by @rdmark in #264
  • introduce compatibility macro for unused attribute by @rdmark in #266
  • bind stateless operations to authenticated sessions by @rdmark in #267
  • introduce auto metadata mode that aligns with Netatalk by @rdmark in #268
  • lib/afp.c: Disable TCP Nagle by @andylemin in #269
  • escape control characters in afpcmd path output by @rdmark in #270
  • recover afpcmd sessions after idle disconnects by @rdmark in #272
  • bound xattr user prefix stripping by @rdmark in #275
  • handle astyle errors granulary in codefm.sh script by @rdmark in #274
  • update straggler references to the old project name by @rdmark in #276
  • refactor AFP server type snapshots by @rdmark in #277
  • normalize copyright headers across codebase by @rdmark in #278
  • better client handling of server connection timeouts by @rdmark in #282
  • restore FUSE reconnection after suspend and resume by @rdmark in #283
  • afpcmd: pagination for long directory listings by @rdmark in #286
  • consistent AFP nomenclature in help text and man pages by @rdmark in #284
  • update changelog for v0.9.5 by @rdmark in #285

New Contributors

Full Changelog: 0.9.4...0.9.5