[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[vidalia-svn] r2550: Delete unused threads; fixes hanging error, but is messy (in vidalia/branches/upnp/src/vidalia: . config)
Author: sjmurdoch
Date: 2008-04-30 12:06:50 -0400 (Wed, 30 Apr 2008)
New Revision: 2550
Modified:
vidalia/branches/upnp/src/vidalia/config/serversettings.cpp
vidalia/branches/upnp/src/vidalia/config/serversettings.h
vidalia/branches/upnp/src/vidalia/config/upnpcontrol.cpp
vidalia/branches/upnp/src/vidalia/config/upnpcontrol.h
vidalia/branches/upnp/src/vidalia/config/upnpcontrolthread.cpp
vidalia/branches/upnp/src/vidalia/mainwindow.cpp
Log:
Delete unused threads; fixes hanging error, but is messy
Modified: vidalia/branches/upnp/src/vidalia/config/serversettings.cpp
===================================================================
--- vidalia/branches/upnp/src/vidalia/config/serversettings.cpp 2008-04-30 13:04:26 UTC (rev 2549)
+++ vidalia/branches/upnp/src/vidalia/config/serversettings.cpp 2008-04-30 16:06:50 UTC (rev 2550)
@@ -188,6 +188,14 @@
#endif
}
+void
+ServerSettings::cleanupPortForwarding()
+{
+#ifdef USE_MINIUPNPC
+ UPNPControl::cleanup();
+#endif
+}
+
/** Virtual method called when we retrieve a server-related setting from Tor.
* Currently this just translates BandwidthFoo to RelayBandwidthFoo when
* appropriate. */
Modified: vidalia/branches/upnp/src/vidalia/config/serversettings.h
===================================================================
--- vidalia/branches/upnp/src/vidalia/config/serversettings.h 2008-04-30 13:04:26 UTC (rev 2549)
+++ vidalia/branches/upnp/src/vidalia/config/serversettings.h 2008-04-30 16:06:50 UTC (rev 2550)
@@ -85,6 +85,7 @@
/** If enable is true, configure UPnP device to forward ORPort, otherwise remove mapping */
void configurePortForwarding(bool enable, bool async);
+ void cleanupPortForwarding();
protected:
/** Virtual method called when we retrieve a server-related setting from Tor.
* Currently this just translates BandwidthFoo to RelayBandwidthFoo when
Modified: vidalia/branches/upnp/src/vidalia/config/upnpcontrol.cpp
===================================================================
--- vidalia/branches/upnp/src/vidalia/config/upnpcontrol.cpp 2008-04-30 13:04:26 UTC (rev 2549)
+++ vidalia/branches/upnp/src/vidalia/config/upnpcontrol.cpp 2008-04-30 16:06:50 UTC (rev 2550)
@@ -37,6 +37,7 @@
init_upnp();
forwardedORPort = 0;
forwardedDirPort = 0;
+ controlThread = NULL;
}
int
@@ -245,6 +246,22 @@
}
void
+UPNPControl::cleanup()
+{
+ if (pInstance!=0 && pInstance->controlThread != NULL) {
+ delete pInstance->controlThread;
+ pInstance->controlThread = 0;
+ }
+}
+
+void
+UPNPControl::setThread(UPNPControlThread *thread)
+{
+ UPNPControl::cleanup();
+ controlThread = thread;
+}
+
+void
UPNPControl::configurePortForwardingSync(bool enable, bool enableORPort, bool enableDirPort, quint16 ORPort, quint16 DirPort)
{
#ifdef WIN32
Modified: vidalia/branches/upnp/src/vidalia/config/upnpcontrol.h
===================================================================
--- vidalia/branches/upnp/src/vidalia/config/upnpcontrol.h 2008-04-30 13:04:26 UTC (rev 2549)
+++ vidalia/branches/upnp/src/vidalia/config/upnpcontrol.h 2008-04-30 16:06:50 UTC (rev 2550)
@@ -25,6 +25,8 @@
#include <miniupnpc/miniupnpc.h>
#include <miniupnpc/upnpcommands.h>
+#include "upnpcontrolthread.h"
+
class UPNPControl : public QObject
{
Q_OBJECT
@@ -42,6 +44,10 @@
static void configurePortForwardingAsync(bool enable, bool enableORPort, bool enableDirPort, quint16 ORPort, quint16 DirPort);
static void configurePortForwardingSync(bool enable, bool enableORPort, bool enableDirPort, quint16 ORPort, quint16 DirPort);
+ static void cleanup();
+
+ void setThread(UPNPControlThread *thread);
+
protected:
UPNPControl();
private:
@@ -62,6 +68,8 @@
QList<quint16> forwardedPorts;
quint16 forwardedORPort;
quint16 forwardedDirPort;
+
+ UPNPControlThread *controlThread;
};
#endif
Modified: vidalia/branches/upnp/src/vidalia/config/upnpcontrolthread.cpp
===================================================================
--- vidalia/branches/upnp/src/vidalia/config/upnpcontrolthread.cpp 2008-04-30 13:04:26 UTC (rev 2549)
+++ vidalia/branches/upnp/src/vidalia/config/upnpcontrolthread.cpp 2008-04-30 16:06:50 UTC (rev 2550)
@@ -29,5 +29,7 @@
void
UPNPControlThread::run()
{
+ UPNPControl *control = UPNPControl::Instance();
+ control->setThread(this);
UPNPControl::configurePortForwardingSync(_enable, _enableORPort, _enableDirPort, _ORPort, _DirPort);
}
Modified: vidalia/branches/upnp/src/vidalia/mainwindow.cpp
===================================================================
--- vidalia/branches/upnp/src/vidalia/mainwindow.cpp 2008-04-30 13:04:26 UTC (rev 2549)
+++ vidalia/branches/upnp/src/vidalia/mainwindow.cpp 2008-04-30 16:06:50 UTC (rev 2550)
@@ -229,6 +229,7 @@
/* Disable port forwarding */
ServerSettings settings(_torControl);
settings.configurePortForwarding(false, false);
+ settings.cleanupPortForwarding();
if (_proxyProcess->state() != QProcess::NotRunning) {
/* Close the proxy server (Polipo ignores the WM_CLOSE event sent by