Edge cases under the hood:
1. Where does “fast” come from?
• SwiftNIO transport: Instead of wrapping legacy C libraries (like libcurl) or using blocking sockets, Upstream is built on top of Apple’s SwiftNIO (similar)
A high-performance, event-driven, non-blocking network framework used for Swift on servers).
• Browsing and transfer separation: We separate directory browsing from file transfers. Transfers run on a dedicated concurrent connection pool (managed via Swift).
Concurrency Actors), ensuring that the Directory Viewer remains completely responsive and lag-free even during multi-gigabyte uploads/downloads.
• Background parsing and SwiftUI rendering: Directory sorting, filtering, and parsing happens entirely on background actors before SwiftUI tables are updated.
Static identifiers, avoiding main-thread freezes.
2. Smart PASV negotiation (NAT and IPv6)
• Many servers behind NAT misconfigure their passive settings and return unroutable private or loopback IPs (such as 192.168.xx or 127.0.0.1) during PASV.
The handshake upstream explicitly checks for this and automatically overrides it, returning control to reusing the host of the connection (which is guaranteed to happen).
convertible).
• On IPv6 connections, it automatically switches to EPSV (Extended Passive, RFC 2428) to negotiate only the port, preventing passive negotiation.
3. Directory List Format
• Questions the upstream server specifications (FEAT) and prefers MLSD (RFC 3659) for the standard machine-readable format.
• If MLSD is not supported, we fall back to a custom, regex-free Unix list (ls -l) parser that tolerates irregular column spacing, local date formats, and so on.
Symlink Pattern.
4. No silent failure
• We use a strict 15-second connect timeout on both control and data channels to allow fast failover rather than hanging forever.
• Every command and response is put into a live console/message log (similar to FileZilla) at the bottom of the screen. If a legacy server fails to negotiate,
You won’t be left guessing—you can inspect raw protocol logs and exact FTP error codes in real time.
Give it a try and let us know how it handles your toughest server connections!
<a href