mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-25 22:05:53 +03:00
In case of error, report the right error instead of missing etag
also, missing etag is not a fatal error
This commit is contained in:
parent
1338c08622
commit
3fac5f91c8
2 changed files with 20 additions and 2 deletions
|
@ -358,17 +358,25 @@ void GETFileJob::start() {
|
||||||
|
|
||||||
void GETFileJob::slotMetaDataChanged()
|
void GETFileJob::slotMetaDataChanged()
|
||||||
{
|
{
|
||||||
|
qDebug() << Q_FUNC_INFO << reply()->error() << reply()->errorString() << reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute);
|
||||||
|
if (reply()->error() != QNetworkReply::NoError ) {
|
||||||
|
// We will handle the error when the job is finished.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QByteArray etag = parseEtag(reply()->rawHeader("Etag"));
|
QByteArray etag = parseEtag(reply()->rawHeader("Etag"));
|
||||||
|
|
||||||
if (etag.isEmpty()) {
|
if (etag.isEmpty()) {
|
||||||
qDebug() << Q_FUNC_INFO << "No E-Tag reply by server, considering it invalid";
|
qDebug() << Q_FUNC_INFO << "No E-Tag reply by server, considering it invalid";
|
||||||
_errorString = tr("No E-Tag received from server, check Proxy/Gateway");
|
_errorString = tr("No E-Tag received from server, check Proxy/Gateway");
|
||||||
|
_errorStatus = SyncFileItem::NormalError;
|
||||||
reply()->abort();
|
reply()->abort();
|
||||||
return;
|
return;
|
||||||
} else if (!_expectedEtagForResume.isEmpty() && _expectedEtagForResume != etag) {
|
} else if (!_expectedEtagForResume.isEmpty() && _expectedEtagForResume != etag) {
|
||||||
qDebug() << Q_FUNC_INFO << "We received a different E-Tag for resuming!"
|
qDebug() << Q_FUNC_INFO << "We received a different E-Tag for resuming!"
|
||||||
<< _expectedEtagForResume << "vs" << etag;
|
<< _expectedEtagForResume << "vs" << etag;
|
||||||
_errorString = tr("We received a different E-Tag for resuming. Retrying next time.");
|
_errorString = tr("We received a different E-Tag for resuming. Retrying next time.");
|
||||||
|
_errorStatus = SyncFileItem::NormalError;
|
||||||
reply()->abort();
|
reply()->abort();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -383,6 +391,7 @@ void GETFileJob::slotReadyRead()
|
||||||
qint64 r = reply()->read(buffer.data(), bufferSize);
|
qint64 r = reply()->read(buffer.data(), bufferSize);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
_errorString = reply()->errorString();
|
_errorString = reply()->errorString();
|
||||||
|
_errorStatus = SyncFileItem::NormalError;
|
||||||
qDebug() << "Error while reading from device: " << _errorString;
|
qDebug() << "Error while reading from device: " << _errorString;
|
||||||
reply()->abort();
|
reply()->abort();
|
||||||
return;
|
return;
|
||||||
|
@ -391,6 +400,7 @@ void GETFileJob::slotReadyRead()
|
||||||
qint64 w = _device->write(buffer.constData(), r);
|
qint64 w = _device->write(buffer.constData(), r);
|
||||||
if (w != r) {
|
if (w != r) {
|
||||||
_errorString = _device->errorString();
|
_errorString = _device->errorString();
|
||||||
|
_errorStatus = SyncFileItem::NormalError;
|
||||||
qDebug() << "Error while writing to file" << w << r << _errorString;
|
qDebug() << "Error while writing to file" << w << r << _errorString;
|
||||||
reply()->abort();
|
reply()->abort();
|
||||||
return;
|
return;
|
||||||
|
@ -497,7 +507,11 @@ void PropagateDownloadFileQNAM::slotGetFinished()
|
||||||
}
|
}
|
||||||
_item._httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
_item._httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||||
_propagator->_activeJobs--;
|
_propagator->_activeJobs--;
|
||||||
done(classifyError(err, _item._httpErrorCode), job->errorString());
|
SyncFileItem::Status status = job->errorStatus();
|
||||||
|
if (status == SyncFileItem::NoStatus) {
|
||||||
|
status = classifyError(err, _item._httpErrorCode);
|
||||||
|
}
|
||||||
|
done(status, job->errorString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ class GETFileJob : public AbstractNetworkJob {
|
||||||
QMap<QByteArray, QByteArray> _headers;
|
QMap<QByteArray, QByteArray> _headers;
|
||||||
QString _errorString;
|
QString _errorString;
|
||||||
QByteArray _expectedEtagForResume;
|
QByteArray _expectedEtagForResume;
|
||||||
|
SyncFileItem::Status _errorStatus;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// DOES NOT take owncership of the device.
|
// DOES NOT take owncership of the device.
|
||||||
|
@ -108,7 +109,8 @@ public:
|
||||||
const QMap<QByteArray, QByteArray> &headers, QByteArray expectedEtagForResume,
|
const QMap<QByteArray, QByteArray> &headers, QByteArray expectedEtagForResume,
|
||||||
QObject* parent = 0)
|
QObject* parent = 0)
|
||||||
: AbstractNetworkJob(account, path, parent),
|
: AbstractNetworkJob(account, path, parent),
|
||||||
_device(device), _headers(headers), _expectedEtagForResume(expectedEtagForResume) {}
|
_device(device), _headers(headers), _expectedEtagForResume(expectedEtagForResume),
|
||||||
|
_errorStatus(SyncFileItem::NoStatus) {}
|
||||||
|
|
||||||
virtual void start();
|
virtual void start();
|
||||||
virtual bool finished() {
|
virtual bool finished() {
|
||||||
|
@ -120,6 +122,8 @@ public:
|
||||||
return _errorString.isEmpty() ? reply()->errorString() : _errorString;
|
return _errorString.isEmpty() ? reply()->errorString() : _errorString;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
SyncFileItem::Status errorStatus() { return _errorStatus; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void finishedSignal();
|
void finishedSignal();
|
||||||
void downloadProgress(qint64,qint64);
|
void downloadProgress(qint64,qint64);
|
||||||
|
|
Loading…
Reference in a new issue