int Updater::checkManifest() { QUrl baseUrl(MANIFEST_URL); QNetworkAccessManager manager; QNetworkRequest request = getNetworkRequest(baseUrl); QNetworkReply *rep = manager.get(request); while(rep->error() == QNetworkReply::NoError && !rep->isFinished()) QCoreApplication::processEvents(); while(true) { while(!rep->isFinished()) QCoreApplication::processEvents(); if(rep->error() != QNetworkReply::NoError) return RES_CHECK_FAILED; QVariant redirect = rep->attribute(QNetworkRequest::RedirectionTargetAttribute); if(redirect.type() != QVariant::Url) break; // redirect baseUrl = baseUrl.resolved(redirect.toUrl()); request = getNetworkRequest(baseUrl); rep = manager.get(request); } if(rep->isFinished() && rep->size() != 0) { QString s; QString ver(VERSION); while(!rep->atEnd()) { s = rep->readLine(); QStringList parts = s.split(' ', QString::SkipEmptyParts); if(parts.size() < 3 || !ver.contains(parts[0])) continue; if(REVISION < parts[1].toInt()) return RES_UPDATE_AVAILABLE; else return RES_NO_UPDATE; } } return RES_NO_UPDATE; }