[tor-commits] [vidalia/alpha] Add more checks for the autoconfiguration
chiiph at torproject.org
chiiph at torproject.org
Wed Sep 7 13:53:11 UTC 2011
commit 05681ccbd647d2e92143f19f747c39358e5c7d9a
Author: Tomás Touceda <chiiph at torproject.org>
Date: Thu Sep 1 19:24:47 2011 -0300
Add more checks for the autoconfiguration
---
src/vidalia/MainWindow.cpp | 20 +++++++++++++++++---
src/vidalia/config/AdvancedPage.cpp | 15 ++++++++++++++-
2 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/src/vidalia/MainWindow.cpp b/src/vidalia/MainWindow.cpp
index 37eca8c..8dbf8ae 100644
--- a/src/vidalia/MainWindow.cpp
+++ b/src/vidalia/MainWindow.cpp
@@ -526,6 +526,15 @@ MainWindow::start()
updateTorStatus(Starting);
+ // Disable autoconfiguration if there are missing config data
+ if(settings.autoControlPort()) {
+ if(settings.getDataDirectory().isEmpty()) {
+ vWarn("Disabling ControlPort autoconfiguration. DataDirectory is empty!");
+ settings.setAutoControlPort(false);
+ }
+ }
+
+
/* Check if Tor is already running separately */
if(settings.getControlMethod() == ControlMethod::Port) {
if(!settings.autoControlPort() && net_test_connect(settings.getControlAddress(),
@@ -643,9 +652,14 @@ MainWindow::started()
if(tries >= maxtries) {
vWarn("Couldn't read port.conf file");
- connectFailed(QString("Vidalia can't find out how to talk to Tor because it can't access this file: %1\n\nHere's the last error message:\n %2")
- .arg(file.fileName())
- .arg(file.errorString()));
+ if(_torControl->isRunning()) {
+ connectFailed(tr("Vidalia can't find out how to talk to Tor because it can't access this file: %1\n\nHere's the last error message:\n%2")
+ .arg(file.fileName())
+ .arg(file.errorString()));
+ } else {
+ vWarn("Tor isn't running!");
+ connectFailed(tr("It seems Tor has stopped running since Vidalia started it.\n\nSee the Advanced Message Log for more information."));
+ }
return;
}
diff --git a/src/vidalia/config/AdvancedPage.cpp b/src/vidalia/config/AdvancedPage.cpp
index 12842bc..0f532e7 100644
--- a/src/vidalia/config/AdvancedPage.cpp
+++ b/src/vidalia/config/AdvancedPage.cpp
@@ -121,6 +121,16 @@ AdvancedPage::save(QString &errmsg)
QHostAddress controlAddress(ui.lineControlAddress->text());
QString path(ui.lineSocketPath->text());
+ if(ui.chkAuto->isChecked()) {
+ if(ui.lineTorDataDirectory->text().isEmpty()) {
+ errmsg = tr("You've checked the autoconfiguration option for the ControlPort, but"
+ " provided no Data Directory. Please add one, or uncheck the"
+ " \"Configure ControlPort automatically\" option.");
+ return false;
+ }
+ _settings->setAutoControlPort(true);
+ }
+
/* Validate the control settings */
if(ui.rdoControlPort->isChecked()) {
if (controlAddress.isNull()) {
@@ -190,7 +200,6 @@ AdvancedPage::save(QString &errmsg)
_settings->setControlPort(ui.lineControlPort->text().toUShort());
}
_settings->setSocketPath(ui.lineSocketPath->text());
- _settings->setAutoControlPort(ui.chkAuto->isChecked());
_settings->setAuthenticationMethod(authMethod);
_settings->setUseRandomPassword(ui.chkRandomPassword->isChecked());
@@ -233,6 +242,10 @@ AdvancedPage::load()
ui.chkUseService->setChecked(s.isInstalled());
#endif
#endif
+ if(Vidalia::torControl()->getTorVersion() < 0x2021a) { // 0x2021a == 0.2.2.26
+ ui.chkAuto->setChecked(false);
+ ui.chkAuto->setVisible(false);
+ }
}
/** Called when the user selects a different authentication method from the
More information about the tor-commits
mailing list