From 1ba9324500a77df2fc3f8ce898f36082036892df Mon Sep 17 00:00:00 2001 From: gregor herrmann Date: Wed, 18 Apr 2012 18:26:48 +0000 Subject: [PATCH] Handle redirects when importing schedules over the network. Fixes: #39 --- src/gui/mainwindow.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 582f34a..56a23f8 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -334,15 +334,21 @@ void MainWindow::on_conferencesAction_triggered() } } -void MainWindow::networkQueryFinished(QNetworkReply *aReply) -{ - if ( aReply->error() != QNetworkReply::NoError ) - { +void MainWindow::networkQueryFinished(QNetworkReply *aReply) { + if (aReply->error() != QNetworkReply::NoError) { error_message(QString("Error occured during download: ") + aReply->errorString()); - } - else - { - importData(aReply->readAll(), aReply->url().toEncoded()); + } else { + QUrl redirectUrl = aReply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); + if (!redirectUrl.isEmpty()) { + if (redirectUrl != aReply->request().url()) { + importFromNetwork(redirectUrl.toString()); + return; // don't enable controls + } else { + error_message(QString("Error: Cyclic redirection from %1 to itself.").arg(redirectUrl.toString())); + } + } else { + importData(aReply->readAll(), aReply->url().toEncoded()); + } } setEnabled(true); } -- 2.30.2