int connectionScore = 0;
QQueue<QString> mirrorList = buildRandomList(known_hosts);
- for(int connectionTimout = 1000; connectionTimout <= MAX_CONN_TIMEOUT; connectionTimout *= 2)
+ for(int connectionTimeout = 1000; connectionTimeout <= MAX_CONN_TIMEOUT; connectionTimeout *= 2)
{
QElapsedTimer elapsedTimer;
- const int globalTimout = 2 * MIN_CONNSCORE * connectionTimout;
elapsedTimer.start();
- do
+ const int globalTimeout = 2 * MIN_CONNSCORE * connectionTimeout, count = mirrorList.count();
+ for(int i = 0; i < count; ++i)
{
- if (!mirrorList.isEmpty())
+ Q_ASSERT(!mirrorList.isEmpty());
+ const QString hostName = mirrorList.dequeue();
+ if (tryContactHost(hostName, connectionTimeout))
{
- const QString hostName = mirrorList.dequeue();
- if (tryContactHost(hostName, connectionTimout))
+ setProgress(1 + (++connectionScore));
+ if (connectionScore >= MIN_CONNSCORE)
{
- setProgress(1 + (connectionScore += 1));
- elapsedTimer.restart();
- if (connectionScore >= MIN_CONNSCORE)
- {
- goto endLoop; /*success*/
- }
+ goto endLoop; /*success*/
}
- else
+ }
+ else
+ {
+ mirrorList.enqueue(hostName);
+ if(elapsedTimer.hasExpired(globalTimeout))
{
- mirrorList.enqueue(hostName); /*re-schedule*/
+ break; /*timer expired*/
}
}
CHECK_CANCELLED();
}
- while(!elapsedTimer.hasExpired(globalTimout));
}
endLoop:
void MUtils::UpdateChecker::testMirrorsList(void)
{
- QStringList mirrorList;
+ QQueue<QString> mirrorList;
for(int i = 0; update_mirrors[i]; i++)
{
- mirrorList << QString::fromLatin1(update_mirrors[i]);
+ mirrorList.enqueue(QString::fromLatin1(update_mirrors[i]));
}
// ----- Test update mirrors ----- //
UpdateCheckerInfo updateInfo;
while (!mirrorList.isEmpty())
{
- const QString currentMirror = mirrorList.takeFirst();
+ const QString currentMirror = mirrorList.dequeue();
bool success = false;
qDebug("Testing: %s", MUTILS_L1STR(currentMirror));
- log("", "Testing:", currentMirror, "");
+ log("", "Testing mirror:", currentMirror, "");
for (quint8 attempt = 0; attempt < 3; ++attempt)
{
updateInfo.resetInfo();
// ----- Test known hosts ----- //
- QStringList knownHostList;
+ mirrorList.clear();
for (int i = 0; known_hosts[i]; i++)
{
- knownHostList << QString::fromLatin1(known_hosts[i]);
+ mirrorList.enqueue(QString::fromLatin1(known_hosts[i]));
}
qDebug("\n[Known Hosts]");
log("Testing all known hosts...", "", "---");
- while(!knownHostList.isEmpty())
+ while(!mirrorList.isEmpty())
{
- const QString currentHost = knownHostList.takeFirst();
+ const QString currentHost = mirrorList.dequeue();
qDebug("Testing: %s", MUTILS_L1STR(currentHost));
- log(QLatin1String(""), "Testing:", currentHost, "");
+ log(QLatin1String(""), "Testing host:", currentHost, "");
if (!tryContactHost(currentHost, DOWNLOAD_TIMEOUT))
{
qWarning("\nConnectivity test FAILED on the following host:\n%s\n", MUTILS_L1STR(currentHost));
while(!data.atEnd())
{
- QString line = QString::fromLatin1(data.readLine()).trimmed();
+ QString line = QString::fromLatin1(data.readLine()).simplified();
if (regex_sec.indexIn(line) >= 0)
{
sectionId = 0; /*unknown section*/