@mjs513 - Here is a screen shot of connection with Filezilla:

This is what I have with handleFTP():
Code:
uint8_t FtpServer::handleFTP() {
#ifdef FTP_ADDITIONAL_DEBUG
// int8_t data0 = data.status();
ftpTransfer transferStage0 = transferStage;
ftpCmd cmdStage0 = cmdStage;
ftpDataConn dataConn0 = dataConn;
#endif
if ((int32_t) (millisDelay - millis()) <= 0) {
if (cmdStage == FTP_Stop) {
if (client.connected()) {
DEBUG_PRINTLN(F("Disconnect client!"));
disconnectClient();
}
cmdStage = FTP_Init;
} else if (cmdStage == FTP_Init) { // Ftp server waiting for connection
abortTransfer();
iniVariables();
DEBUG_PRINT(F(" Ftp server waiting for connection on port "));
DEBUG_PRINTLN(cmdPort);
cmdStage = FTP_Client;
} else if (cmdStage == FTP_Client) { // Ftp server idle
//#if (FTP_SERVER_NETWORK_TYPE == NETWORK_WiFiNINA)
// if (client && !client.connected()) {
// client.stop();
// DEBUG_PRINTLN(F("CLIENT STOP!!"));
// }
// byte status;
// client = ftpServer.available(&status);
/*
* CLOSED = 0,
LISTEN = 1,
SYN_SENT = 2,
SYN_RCVD = 3,
ESTABLISHED = 4,
FIN_WAIT_1 = 5,
FIN_WAIT_2 = 6,
CLOSE_WAIT = 7,
CLOSING = 8,
LAST_ACK = 9,
TIME_WAIT = 10
*
*/
// DEBUG_PRINTLN(status);
//#elif defined(ESP8266)
// if( ftpServer.hasClient())
// {
// client.stop();
// client = ftpServer.available();
// }
//#else
// if (client && !client.connected()) {
// client.stop();
// DEBUG_PRINTLN(F("CLIENT STOP!!"));
// }
client = ftpServer.accept();
//#endif
if (client.connected()) // A client connected
{
clientConnected();
millisEndConnection = millis() + 1000L * FTP_AUTH_TIME_OUT; // wait client id for 10 s.
cmdStage = FTP_User;
}
} else if (readChar() > 0) // got response