Discovery: Explicitly check for XML parser errors

..instead of relying that our state machine does not do anything in that case.
This commit is contained in:
Markus Goetz 2015-04-13 16:04:24 +02:00
parent 9d5f5ea3bc
commit 9ffacd4ecd

View file

@ -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()
}
}
}
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;