@@ -31,10 +31,26 @@ CurrentVersionFetcher::CurrentVersionFetcher(QObject* parent) : QObject(parent),
3131 connect (manager_.get (), SIGNAL (finished (QNetworkReply*)), this , SLOT (reply (QNetworkReply*)));
3232}
3333
34- void CurrentVersionFetcher::fetchCurrentVersion (QString url)
34+ static const QString versionMirrors[] = {
35+ " https://cdn.unvanquished.net/" ,
36+ " https://cdn.illwieckz.net/unvanquished/" ,
37+ " https://webseed.unv.kangz.net/" ,
38+ nullptr ,
39+ };
40+
41+ static const QString *versionMirror = &versionMirrors[0 ];
42+
43+ void CurrentVersionFetcher::fetchCurrentVersion ()
3544{
36- QNetworkRequest request = QNetworkRequest (QUrl (url));
37- manager_->get (request);
45+ static const QString versionFile = " current.json" ;
46+
47+ if (versionMirror) {
48+ QString versionURL = versionMirror + versionFile;
49+ qDebug () << " Fetching" << versionURL;
50+ QNetworkRequest request = QNetworkRequest (QUrl (versionURL));
51+ manager_->get (request);
52+ versionMirror++;
53+ }
3854}
3955
4056void ComponentVersionFetcher (QJsonObject components, QString name, QString system, QString *version, QString *url)
@@ -101,7 +117,12 @@ void CurrentVersionFetcher::reply(QNetworkReply* reply)
101117
102118 if (reply->error () != QNetworkReply::NoError) {
103119 qDebug () << " CurrentVersionFetcher: network error" ;
104- emit onCurrentVersions (updaterVersion, updaterUrl, gameVersion, gameUrl, newsUrl);
120+
121+ if (versionMirror) {
122+ fetchCurrentVersion ();
123+ } else {
124+ emit onCurrentVersions (updaterVersion, updaterUrl, gameVersion, gameUrl, newsUrl);
125+ }
105126 return ;
106127 }
107128
0 commit comments