[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