Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorClaudio Cambra <claudio.cambra@gmail.com>2022-09-09 16:56:36 +0300
committerClaudio Cambra <claudio.cambra@gmail.com>2022-09-12 14:57:31 +0300
commit2b3efbfb2a88735d3fd943ab4dff5ed8219c8547 (patch)
treed640f3d556dd43c35192e8639dc3bed80ea5d4a1 /src
parenta48aee9c162bb1435de713e7de8f32968298ae8e (diff)
Accept valid lsColJob reply XML content types
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/libsync/discoveryphase.cpp16
-rw-r--r--src/libsync/networkjobs.cpp11
2 files changed, 19 insertions, 8 deletions
diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp
index 67b91ad87..1f4576564 100644
--- a/src/libsync/discoveryphase.cpp
+++ b/src/libsync/discoveryphase.cpp
@@ -583,14 +583,20 @@ void DiscoverySingleDirectoryJob::lsJobFinishedWithoutErrorSlot()
void DiscoverySingleDirectoryJob::lsJobFinishedWithErrorSlot(QNetworkReply *r)
{
- QString contentType = r->header(QNetworkRequest::ContentTypeHeader).toString();
- int httpCode = r->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
- QString msg = r->errorString();
+ const auto contentType = r->header(QNetworkRequest::ContentTypeHeader).toString();
+ const auto invalidContentType = !contentType.contains("application/xml; charset=utf-8") &&
+ !contentType.contains("application/xml; charset=\"utf-8\"") &&
+ !contentType.contains("text/xml; charset=utf-8") &&
+ !contentType.contains("text/xml; charset=\"utf-8\"");
+ const auto httpCode = r->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ auto msg = r->errorString();
+
qCWarning(lcDiscovery) << "LSCOL job error" << r->errorString() << httpCode << r->error();
- if (r->error() == QNetworkReply::NoError
- && !contentType.contains("application/xml; charset=utf-8")) {
+
+ if (r->error() == QNetworkReply::NoError && invalidContentType) {
msg = tr("Server error: PROPFIND reply is not XML formatted!");
}
+
emit finished(HttpError{ httpCode, msg });
deleteLater();
}
diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp
index 335dd1eb5..91970b5ce 100644
--- a/src/libsync/networkjobs.cpp
+++ b/src/libsync/networkjobs.cpp
@@ -395,9 +395,14 @@ bool LsColJob::finished()
qCInfo(lcLsColJob) << "LSCOL of" << reply()->request().url() << "FINISHED WITH STATUS"
<< replyStatusString();
- QString contentType = reply()->header(QNetworkRequest::ContentTypeHeader).toString();
- int httpCode = reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
- if (httpCode == 207 && contentType.contains("application/xml; charset=utf-8")) {
+ const auto contentType = reply()->header(QNetworkRequest::ContentTypeHeader).toString();
+ const auto httpCode = reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ const auto validContentType = contentType.contains("application/xml; charset=utf-8") ||
+ contentType.contains("application/xml; charset=\"utf-8\"") ||
+ contentType.contains("text/xml; charset=utf-8") ||
+ contentType.contains("text/xml; charset=\"utf-8\"");
+
+ if (httpCode == 207 && validContentType) {
LsColXMLParser parser;
connect(&parser, &LsColXMLParser::directoryListingSubfolders,
this, &LsColJob::directoryListingSubfolders);