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

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarkus Goetz <markus@woboq.com>2015-04-13 17:04:24 +0300
committerMarkus Goetz <markus@woboq.com>2015-04-13 17:04:24 +0300
commit9ffacd4ecdb60f5146cc628bf53acf74b9264dd4 (patch)
tree7c961f7097d5fefbc7ade78aaf9910d7d2709863 /src
parent9d5f5ea3bc10772f6a803aa4c1e66b5a0105e242 (diff)
Discovery: Explicitly check for XML parser errors
..instead of relying that our state machine does not do anything in that case.
Diffstat (limited to 'src')
-rw-r--r--src/libsync/networkjobs.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp
index 96edf8ddd..e8a571a34 100644
--- a/src/libsync/networkjobs.cpp
+++ b/src/libsync/networkjobs.cpp
@@ -400,6 +400,9 @@ static QString readContentsAsString(QXmlStreamReader &reader) {
return result;
}
+// TODO: Instead of doing all in this slot, we should iteratively parse in readyRead(). This
+// would allow us to be more asynchronous in processing while data is coming from the network,
+// not in all in one big blobb at the end.
bool LsColJob::finished()
{
QString contentType = reply()->header(QNetworkRequest::ContentTypeHeader).toString();
@@ -479,13 +482,20 @@ bool LsColJob::finished()
}
}
}
- emit directoryListingSubfolders(folders);
- emit finishedWithoutError();
+
+ if (reader.hasError()) {
+ // XML Parser error? Whatever had been emitted before will come as directoryListingIterated
+ qDebug() << "ERROR" << reader.errorString();
+ emit finishedWithError(reply());
+ } else {
+ emit directoryListingSubfolders(folders);
+ emit finishedWithoutError();
+ }
} else if (httpCode == 207) {
// wrong content type
emit finishedWithError(reply());
} else {
- // wrong HTTP code
+ // wrong HTTP code or any other network error
emit finishedWithError(reply());
}
return true;