diff options
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/access/qftp.cpp | 11 | ||||
-rw-r--r-- | src/network/access/qftp_p.h | 3 | ||||
-rw-r--r-- | src/network/access/qnetworkaccessftpbackend.cpp | 7 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/network/access/qftp.cpp b/src/network/access/qftp.cpp index 4e399f018f..b6b721030b 100644 --- a/src/network/access/qftp.cpp +++ b/src/network/access/qftp.cpp @@ -2124,6 +2124,17 @@ void QFtp::abort() /*! \internal + Clears the last error. + + \sa currentCommand() +*/ +void QFtp::clearError() +{ + d_func()->error = NoError; +} + +/*! + \internal Returns the identifier of the FTP command that is being executed or 0 if there is no command being executed. diff --git a/src/network/access/qftp_p.h b/src/network/access/qftp_p.h index 91d78d1351..a55429933b 100644 --- a/src/network/access/qftp_p.h +++ b/src/network/access/qftp_p.h @@ -157,6 +157,9 @@ Q_SIGNALS: void commandFinished(int, bool); void done(bool); +protected: + void clearError(); + private: Q_DISABLE_COPY_MOVE(QFtp) Q_DECLARE_PRIVATE(QFtp) diff --git a/src/network/access/qnetworkaccessftpbackend.cpp b/src/network/access/qnetworkaccessftpbackend.cpp index 5ad820eba0..51ed2f5a55 100644 --- a/src/network/access/qnetworkaccessftpbackend.cpp +++ b/src/network/access/qnetworkaccessftpbackend.cpp @@ -99,6 +99,8 @@ public: connect(this, SIGNAL(done(bool)), this, SLOT(deleteLater())); close(); } + + using QFtp::clearError; }; QNetworkAccessFtpBackend::QNetworkAccessFtpBackend() @@ -282,7 +284,10 @@ void QNetworkAccessFtpBackend::ftpDone() } // check for errors: - if (ftp->error() != QFtp::NoError) { + if (state == CheckingFeatures && ftp->error() == QFtp::UnknownError) { + qWarning("QNetworkAccessFtpBackend: HELP command failed, ignoring it"); + ftp->clearError(); + } else if (ftp->error() != QFtp::NoError) { QString msg; if (operation() == QNetworkAccessManager::GetOperation) msg = tr("Error while downloading %1: %2"); |