[tor-commits] [vidalia/alpha] Merge branch 'bug4031_rememberports' into alpha
chiiph at torproject.org
chiiph at torproject.org
Mon Jan 23 16:45:43 UTC 2012
commit ed2887ee31d01abe91289206251b05ac1df00772
Merge: 5883f5d 97685a6
Author: Tomás Touceda <chiiph at torproject.org>
Date: Mon Jan 23 12:33:38 2012 -0300
Merge branch 'bug4031_rememberports' into alpha
Conflicts:
src/vidalia/MainWindow.cpp
changes/bug4031 | 2 +
src/vidalia/MainWindow.cpp | 52 +++++++++++++++++++++++++++++++++++++++++--
src/vidalia/MainWindow.h | 4 +++
3 files changed, 55 insertions(+), 3 deletions(-)
diff --cc src/vidalia/MainWindow.cpp
index 03f62a4,28786fc..89387c0
--- a/src/vidalia/MainWindow.cpp
+++ b/src/vidalia/MainWindow.cpp
@@@ -617,13 -594,21 +619,25 @@@ MainWindow::start(
if(settings.getControlMethod() == ControlMethod::Port) {
if(settings.autoControlPort()) {
+ QString portconf = QString("%1/port.conf").arg(expDataDirectory);
+ if(!QFile::remove(portconf))
+ vWarn(QString("Unable to remove %s, may be it didn't existed.").arg(portconf));
+
- args << "ControlPort" << "auto";
- args << "SocksPort" << "auto";
- args << "ControlPortWriteToFile" << portconf;
+ QString control_str = "auto";
+ QString socks_str = "auto";
+
+ if(!_previousControlPort.isEmpty()) {
+ control_str = _previousControlPort;
+ _startedWithPrevious = true;
+ }
+ if(!_previousSocksPort.isEmpty()) {
+ socks_str = _previousSocksPort;
+ _startedWithPrevious = true;
+ }
+
+ args << "ControlPort" << control_str;
+ args << "SocksPort" << socks_str;
+ args << "ControlPortWriteToFile" << QString("%1/port.conf").arg(expDataDirectory);
} else {
/* Add the intended control port value */
quint16 controlPort = settings.getControlPort();
@@@ -869,11 -856,29 +892,34 @@@ voi
MainWindow::connected()
{
authenticate();
+ if(!_torControl->isVidaliaRunningTor()) {
+ QString err;
+ if(!_torControl->takeOwnership(&err))
+ vWarn(err);
+ }
+
+ TorSettings settings;
+ if(settings.autoControlPort()) {
+ // We want to remember the ports if it's on auto
+ QString control_str = "", socks_str = "";
+ if(_torControl->getInfo("net/listeners/control", control_str)) {
+ QStringList control_parts = control_str.split(":");
+ if(control_parts.size() > 1)
+ control_str = control_parts[1];
+ }
+ if(_torControl->getInfo("net/listeners/socks", socks_str)) {
+ QStringList socks_parts = socks_str.split(":");
+ if(socks_parts.size() > 1)
+ socks_str = socks_parts[1];
+ }
+
+ _previousControlPort = control_str;
+ _previousSocksPort = socks_str;
+ } else {
+ // Otherwise we want to clear the remembered ports
+ _previousControlPort = "";
+ _previousSocksPort = "";
+ }
}
/** Called when the connection to the control socket fails. The reason will be
More information about the tor-commits
mailing list