[or-cvs] r14223: Make UPnP code compile. Currently it initializes UPnP device (torbrowser/trunk/src/current-patches)

sjm217 at seul.org sjm217 at seul.org
Thu Mar 27 19:47:47 UTC 2008


Author: sjm217
Date: 2008-03-27 15:47:46 -0400 (Thu, 27 Mar 2008)
New Revision: 14223

Modified:
   torbrowser/trunk/src/current-patches/vidalia-miniupnp.patch
Log:
Make UPnP code compile.
Currently it initializes UPnP device but no more.
Also define STATICLIB to avoid linking errors with Mingw32.

Modified: torbrowser/trunk/src/current-patches/vidalia-miniupnp.patch
===================================================================
--- torbrowser/trunk/src/current-patches/vidalia-miniupnp.patch	2008-03-27 17:25:49 UTC (rev 14222)
+++ torbrowser/trunk/src/current-patches/vidalia-miniupnp.patch	2008-03-27 19:47:46 UTC (rev 14223)
@@ -1,19 +1,19 @@
 Index: INSTALL
 ===================================================================
---- INSTALL	(revision 2423)
+--- INSTALL	(revision 2465)
 +++ INSTALL	(working copy)
-@@ -205,3 +205,7 @@
+@@ -206,3 +206,8 @@
  'cmake --help' or 'man cmake' (on non-Windows platforms) for more information
  about supported generators and configuration options.
  
 +Including UPnP support
 +----------------------
 +
-+cmake -G "MSYS Makefiles" -DMINIUPNPC_LIBRARY_DIR="/usr/local/lib" -DMINIUPNPC_INCLUDE_DIR="/usr/local/include" .
-\ No newline at end of file
++cmake -G "MSYS Makefiles" -DMINIUPNPC_LIBRARY_DIR="/usr/local/lib" -DMINIUPNPC_INCLUDE_DIR="/usr/local/include" .
++
 Index: src/vidalia/CMakeLists.txt
 ===================================================================
---- src/vidalia/CMakeLists.txt	(revision 2423)
+--- src/vidalia/CMakeLists.txt	(revision 2465)
 +++ src/vidalia/CMakeLists.txt	(working copy)
 @@ -16,6 +16,7 @@
    ${CMAKE_CURRENT_SOURCE_DIR}
@@ -22,8 +22,8 @@
 +  ${MINIUPNPC_INCLUDE_DIR}
  )
  configure_file(
-   ${CMAKE_CURRENT_SOURCE_DIR}/vidalia.h.in
-@@ -238,9 +239,16 @@
+   ${CMAKE_CURRENT_SOURCE_DIR}/res/vidalia_win.rc.in
+@@ -234,9 +235,16 @@
  endif(APPLE)
  add_dependencies(${vidalia_BIN} translations)
  
@@ -40,9 +40,14 @@
    torcontrol
    util
  )
+@@ -268,3 +276,4 @@
+ endif(NOT WIN32 AND NOT APPLE)
+ 
+ 
++
 Index: src/vidalia/config/serversettings.cpp
 ===================================================================
---- src/vidalia/config/serversettings.cpp	(revision 2423)
+--- src/vidalia/config/serversettings.cpp	(revision 2465)
 +++ src/vidalia/config/serversettings.cpp	(working copy)
 @@ -130,6 +130,9 @@
    bool rc;
@@ -54,7 +59,7 @@
      rc = torControl()->setConf(confValues(), errmsg);
    } else { 
      QStringList resetKeys;
-@@ -152,6 +155,91 @@
+@@ -152,6 +155,72 @@
    return rc;
  }
  
@@ -64,39 +69,19 @@
 +ServerSettings::init_upnp()
 +{
 +  struct UPNPDev * devlist;
-+  struct UPNPDev * dev;
-+  char * descXML;
-+  int descXMLsize = 0;
++  char lanaddr[256];
++  int retval;
++
 +  printf("TB : init_upnp()\n");
++
 +  memset(&urls, 0, sizeof(struct UPNPUrls));
 +  memset(&data, 0, sizeof(struct IGDdatas));
-+  devlist = upnpDiscover(2000);
-+  if (devlist)
-+    {
-+      dev = devlist;
-+      while (dev)
-+	{
-+	  if (strstr (dev->st, "InternetGatewayDevice"))
-+	    break;
-+	  dev = dev->pNext;
-+	}
-+      if (!dev)
-+	dev = devlist; /* defaulting to first device */
 +
-+      printf("UPnP device :\n"
-+	     " desc: %s\n st: %s\n",
-+	     dev->descURL, dev->st);
++  devlist = upnpDiscover(2000, NULL, NULL);
++  retval = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, 256);
++  printf("UPNP: %d", retval);
 +
-+      descXML = miniwget(dev->descURL, &descXMLsize);
-+      if (descXML)
-+	{
-+	  parserootdesc (descXML, descXMLsize, &data);
-+	  free (descXML); descXML = 0;
-+	  GetUPNPUrls (&urls, &data, dev->descURL);
-+	}
-+      freeUPNPDevlist(devlist);
-+    }
-+
++  freeUPNPDevlist(devlist);
 +}
 +
 +/** Based on http://miniupnp.free.fr/files/download.php?file=xchat-upnp20061022.patch */
@@ -136,37 +121,44 @@
 +
 +/* TODO: We should call this periodically, in case the router gets rebooted or forgets its UPnP settings */
 +/* TODO: Remove port forwarding when Tor is shutdown or the ORPort changes */
++/* TODO: init_upnp() will block for up to 2 seconds. We should fire off a thread */
 +/** Configure UPnP device to forward DirPort and ORPort */
 +void
 +ServerSettings::configurePortForwarding()
 +{
-+  ;
++  init_upnp();
 +}
 +
  /** Virtual method called when we retrieve a server-related setting from Tor.
   * Currently this just translates BandwidthFoo to RelayBandwidthFoo when
   * appropriate. */
+@@ -321,3 +390,4 @@
+   setValue(SETTING_BANDWIDTH_BURST, rate);
+ }
+ 
++
 Index: src/vidalia/config/serversettings.h
 ===================================================================
---- src/vidalia/config/serversettings.h	(revision 2423)
+--- src/vidalia/config/serversettings.h	(revision 2465)
 +++ src/vidalia/config/serversettings.h	(working copy)
-@@ -20,6 +20,9 @@
+@@ -20,6 +20,10 @@
  #include "abstracttorsettings.h"
  #include "exitpolicy.h"
  
++#define STATICLIB
 +#include <miniupnpc/miniwget.h>
 +#include <miniupnpc/miniupnpc.h>
 +#include <miniupnpc/upnpcommands.h>
  
  class ServerSettings : public AbstractTorSettings
  {
-@@ -89,8 +92,18 @@
+@@ -89,9 +93,20 @@
    virtual QVariant torValue(const QString &key) const;
  
  private:
 +  /** Used by miniupnpc library */
-+  static struct UPNPUrls urls;
-+  static struct IGDdatas data;
++  struct UPNPUrls urls;
++  struct IGDdatas data;
 +  void init_upnp();
 +  void upnp_add_redir (const char * addr, int port);
 +  void upnp_rem_redir(int port);
@@ -179,3 +171,5 @@
  };
  
  #endif
+ 
++



More information about the tor-commits mailing list