gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r15925 - gnunet/src/nat


From: gnunet
Subject: [GNUnet-SVN] r15925 - gnunet/src/nat
Date: Mon, 11 Jul 2011 16:35:45 +0200

Author: grothoff
Date: 2011-07-11 16:35:44 +0200 (Mon, 11 Jul 2011)
New Revision: 15925

Modified:
   gnunet/src/nat/nat.c
   gnunet/src/nat/nat_mini.c
Log:
proper cleanup

Modified: gnunet/src/nat/nat.c
===================================================================
--- gnunet/src/nat/nat.c        2011-07-11 14:35:34 UTC (rev 15924)
+++ gnunet/src/nat/nat.c        2011-07-11 14:35:44 UTC (rev 15925)
@@ -1316,7 +1316,8 @@
       GNUNET_CONTAINER_DLL_remove (h->mini_head,
                                   h->mini_tail,
                                   ml);
-      GNUNET_NAT_mini_map_stop (ml->mini);
+      if (NULL != ml->mini)
+       GNUNET_NAT_mini_map_stop (ml->mini);
       GNUNET_free (ml);
     }
   if (h->ext_dns != NULL)

Modified: gnunet/src/nat/nat_mini.c
===================================================================
--- gnunet/src/nat/nat_mini.c   2011-07-11 14:35:34 UTC (rev 15924)
+++ gnunet/src/nat/nat_mini.c   2011-07-11 14:35:44 UTC (rev 15925)
@@ -399,7 +399,7 @@
  * @param is_tcp GNUNET_YES to map TCP, GNUNET_NO for UDP
  * @param ac function to call with mapping result
  * @param ac_cls closure for 'ac'
- * @return NULL on error
+ * @return NULL on error (no 'upnpc' installed)
  */
 struct GNUNET_NAT_MiniHandle *
 GNUNET_NAT_mini_map_start (uint16_t port,
@@ -410,6 +410,9 @@
   struct GNUNET_NAT_MiniHandle *ret;
   char pstr[6];
 
+  if (GNUNET_SYSERR ==
+      GNUNET_OS_check_helper_binary ("upnpc"))
+    return NULL;
   ret = GNUNET_malloc (sizeof (struct GNUNET_NAT_MiniHandle));
   ret->ac = ac;
   ret->ac_cls = ac_cls;
@@ -474,6 +477,16 @@
 {
   char pstr[6];
 
+  if (GNUNET_SCHEDULER_NO_TASK != mini->refresh_task)
+    {
+      GNUNET_SCHEDULER_cancel (mini->refresh_task);
+      mini->refresh_task = GNUNET_SCHEDULER_NO_TASK;
+    }
+  if (mini->refresh_cmd != NULL)
+    {
+      GNUNET_OS_command_stop (mini->refresh_cmd);
+      mini->refresh_cmd = NULL;
+    }
   if (! mini->did_map)
     {
       if (mini->map_cmd != NULL)
@@ -484,16 +497,6 @@
       GNUNET_free (mini);
       return;
     }
-  if (GNUNET_SCHEDULER_NO_TASK != mini->refresh_task)
-    {
-      GNUNET_SCHEDULER_cancel (mini->refresh_task);
-      mini->refresh_task = GNUNET_SCHEDULER_NO_TASK;
-    }
-  if (mini->refresh_cmd != NULL)
-    {
-      GNUNET_OS_command_stop (mini->refresh_cmd);
-      mini->refresh_cmd = NULL;
-    }
   mini->ac (mini->ac_cls, GNUNET_NO,
            (const struct sockaddr*) &mini->current_addr,
            sizeof (mini->current_addr));




reply via email to

[Prev in Thread] Current Thread [Next in Thread]