From f3dc40113bda4265cd461d2081540db83c323ec0 Mon Sep 17 00:00:00 2001 From: Vadim Kurland Date: Fri, 18 Sep 2009 17:22:54 +0000 Subject: [PATCH] update_check should properly handle html responses from captive portal proxies --- build_num | 2 +- src/gui/FWWindow.cpp | 14 +++++++++++++- src/gui/PrefsDialog.cpp | 18 +++++++++++------- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/build_num b/build_num index 37e2a32ed..354b88e26 100644 --- a/build_num +++ b/build_num @@ -1 +1 @@ -#define BUILD_NUM 1471 +#define BUILD_NUM 1473 diff --git a/src/gui/FWWindow.cpp b/src/gui/FWWindow.cpp index da076c01c..7339db656 100644 --- a/src/gui/FWWindow.cpp +++ b/src/gui/FWWindow.cpp @@ -1740,9 +1740,21 @@ void FWWindow::updateTreeFont () void FWWindow::checkForUpgrade(const QString& server_response) { + disconnect(current_version_http_getter, SIGNAL(done(const QString&)), + this, SLOT(checkForUpgrade(const QString&))); + + /* + * getStatus() returns error status if server esponded with 302 or + * 301 redirect. Only "200" is considered success. + */ if (current_version_http_getter->getStatus()) { - if (!server_response.trimmed().isEmpty()) + /* + * server response may be some html or other data in case + * connection goes via proxy, esp. with captive portals. We + * should not interpret that as "new version is available" + */ + if (server_response.trimmed() == "update = 1") { QMessageBox::warning( this,"Firewall Builder", diff --git a/src/gui/PrefsDialog.cpp b/src/gui/PrefsDialog.cpp index 9d707c182..06d6e8aa5 100644 --- a/src/gui/PrefsDialog.cpp +++ b/src/gui/PrefsDialog.cpp @@ -404,18 +404,22 @@ void PrefsDialog::checkForUpgrade(const QString& server_response) if (current_version_http_getter.getStatus()) { - - if (server_response.trimmed().isEmpty()) - { - QMessageBox::information( - this,"Firewall Builder", - tr("Your version of Firewall Builder is up to date.")); - } else + /* + * server response may be some html or other data in case + * connection goes via proxy, esp. with captive portals. We + * should not interpret that as "new version is available" + */ + if (server_response.trimmed() == "update = 1") { QMessageBox::warning( this,"Firewall Builder", tr("A new version of Firewall Builder is available at" " http://www.fwbuilder.org")); + } else + { + QMessageBox::information( + this,"Firewall Builder", + tr("Your version of Firewall Builder is up to date.")); } } else {