abortTransfer method

void abortTransfer()

Implementation

void abortTransfer() async {
  if (transferInProgress) {
    transferInProgress = false;
    try {
      dataSocket?.destroy();
    } catch (e) {
      logger.generalLog('Error destroying data socket during abort: $e');
    }
    dataSocket = null;
    try {
      dataListener?.close();
    } catch (e) {
      logger.generalLog('Error closing data listener during abort: $e');
    }
    dataListener = null;
    try {
      _secureDataListener?.close();
    } catch (e) {
      logger
          .generalLog('Error closing secure data listener during abort: $e');
    }
    _secureDataListener = null;
    // RFC 959: ABOR during transfer requires 426 followed by 226
    sendResponse('426 Transfer aborted');
    sendResponse('226 ABOR command successful');
  } else {
    // RFC 959: 225 if data connection open but no transfer; 226 otherwise
    if (dataSocket != null || dataListener != null) {
      sendResponse('225 Data connection open; no transfer in progress');
    } else {
      sendResponse('226 ABOR command successful');
    }
  }
}