diff options
author | Markus Goetz <markus@woboq.com> | 2015-04-13 17:04:24 +0300 |
---|---|---|
committer | Markus Goetz <markus@woboq.com> | 2015-04-13 17:04:24 +0300 |
commit | 9ffacd4ecdb60f5146cc628bf53acf74b9264dd4 (patch) | |
tree | 7c961f7097d5fefbc7ade78aaf9910d7d2709863 /src | |
parent | 9d5f5ea3bc10772f6a803aa4c1e66b5a0105e242 (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.cpp | 16 |
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; |