Skip to content

"Interoperability failure - 200 Type set to ASCII." because of directory listing parser switch and connection exception #17946

Description

@pkramme

Describe the bug
When using FTPS to connect to a server, cyberduck is trying out different parsers for getting directory contents.

The LIST -a parser creates a PASV connection, and then tries to connect to the server by using TLS for the IP address, which fails because the server does not have any certificate for just the IP address. This causes Cyberduck to switch to the next parser. Cyberduck then gets confused in the control connection because the server still answers with the following to the previous LIST -a attempt:

226 Closing data connection, sent 0 bytes

Cyberduck interprets this as the response to the next command by the next list parser (CWD /whatever). Finally, the connection fails because the responses do not make sense to Cyberduck.

2026-03-17 12:03:58,439 [Thread-90] INFO  audit.transcript - CWD /import
2026-03-17 12:03:58,454 [Thread-90] INFO  audit.transcript - 250 Directory changed to /import
2026-03-17 12:03:58,454 [Thread-90] INFO  audit.transcript - TYPE A
2026-03-17 12:03:58,468 [Thread-90] INFO  audit.transcript - 200 Type set to ASCII
2026-03-17 12:03:58,468 [Thread-90] INFO  audit.transcript - PASV
2026-03-17 12:03:58,482 [Thread-90] INFO  audit.transcript - 227 Entering Passive Mode (xxx,xxx,xxx,xxx,27,158)
2026-03-17 12:03:58,483 [Thread-90] DEBUG ch.cyberduck.core.ssl.CustomTrustSSLProtocolSocketFactory - Configure SSL parameters with protocols [TLSv1.2, TLSv1.1, TLSv1]
2026-03-17 12:03:58,483 [Thread-90] INFO  ch.cyberduck.core.ssl.CustomTrustSSLProtocolSocketFactory - Enabled cipher suites [...]
2026-03-17 12:03:58,483 [Thread-90] DEBUG ch.cyberduck.core.ssl.CustomTrustSSLProtocolSocketFactory - Handshake for socket SSLSocket[hostname=null, port=0, Session(1773745438482|SSL_NULL_WITH_NULL_NULL)]
2026-03-17 12:03:58,498 [Thread-90] INFO  audit.transcript - LIST -a
2026-03-17 12:03:58,513 [Thread-90] INFO  audit.transcript - 150 Opening ASCII mode data connection for file list
2026-03-17 12:03:58,513 [Thread-90] WARN  ch.cyberduck.core.ftp.FTPClient - SSL session Session(1773745435274|TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256) for socket SSLSocket[hostname=xxx.xxx.xxx.xxx, port=7070, Session(1773745438482|SSL_NULL_WITH_NULL_NULL)] is not rejoinable
2026-03-17 12:03:58,529 [Thread-90] WARN  ch.cyberduck.core.ftp.FTPExceptionMappingService - Map failure javax.net.ssl.SSLException: (internal_error) Received fatal alert: internal_error
2026-03-17 12:03:58,530 [Thread-90] WARN  ch.cyberduck.core.DefaultIOExceptionMappingService - Map failure javax.net.ssl.SSLException: (internal_error) Received fatal alert: internal_error
2026-03-17 12:03:58,530 [Thread-90] WARN  ch.cyberduck.core.ssl.SSLExceptionMappingService - Map failure javax.net.ssl.SSLException: (internal_error) Received fatal alert: internal_error
2026-03-17 12:03:58,530 [Thread-90] WARN  ch.cyberduck.core.ftp.DataConnectionActionExecutor - Server denied data socket operation with Interoperability failure
2026-03-17 12:03:58,530 [Thread-90] WARN  ch.cyberduck.core.ftp.list.FTPListService - Remove Command{command=LIST, arg='-a'} from listing strategies
2026-03-17 12:03:58,530 [Thread-90] INFO  audit.transcript - CWD /import
2026-03-17 12:03:58,531 [Thread-90] INFO  audit.transcript - 226 Closing data connection, sent 0 bytes
2026-03-17 12:03:58,531 [Thread-90] INFO  audit.transcript - TYPE A
2026-03-17 12:03:58,545 [Thread-90] INFO  audit.transcript - 250 Directory changed to /import
2026-03-17 12:03:58,545 [Thread-90] INFO  audit.transcript - PASV
2026-03-17 12:03:58,559 [Thread-90] INFO  audit.transcript - 200 Type set to ASCII
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb > CWD /import
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb < 250 Directory changed to /import
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb > TYPE A
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb < 200 Type set to ASCII
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb > PASV
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb < 227 Entering Passive Mode (xxx,xxx,xxx,xxx,27,158)
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb > LIST -a
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb < 150 Opening ASCII mode data connection for file list
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb < 226 Closing data connection, sent 0 bytes
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb > CWD /import
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb < 250 Directory changed to /import
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb > TYPE A
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb < 200 Type set to ASCII
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb > PASV
2026/03/17 12:03:58 60a16bbc8b1135ac6eeb < 227 Entering Passive Mode (xxx,xxx,xxx,xxx,27,171)
2026/03/17 12:03:59 60a16bbc8b1135ac6eeb > CWD /import
2026/03/17 12:03:59 60a16bbc8b1135ac6eeb < 250 Directory changed to /import
2026/03/17 12:03:59 60a16bbc8b1135ac6eeb > TYPE A
2026/03/17 12:03:59 60a16bbc8b1135ac6eeb < 200 Type set to ASCII
2026/03/17 12:03:59 60a16bbc8b1135ac6eeb > PASV
2026/03/17 12:03:59 60a16bbc8b1135ac6eeb < 227 Entering Passive Mode (xxx,xxx,xxx,xxx,30,120)

To Reproduce
Steps to reproduce the behavior:

  1. Use FTPS server with certificate for a domain. The server must have incompatible output for the STAT command, so that Cyberduck switches to LIST -a. Ideally, the server responds with compatible output to the STAT for populated directories, but not for empty directories.
  2. Connect to the server, and wait for Cyberduck to respond with "Interoperability failure - 200 Type set to ASCII. Please contact your web hosting service provider for assistance."

Expected behavior
Work correctly.

Screenshots

Desktop (please complete the following information):

  • OS: MacOS
  • Version 26.3.1

Log Files
Included above.

Additional context

Metadata

Metadata

Assignees

Labels

ftpFTP Protocol Implementation

Type

Fields

No fields configured for Bug.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions