gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r27584 - gnunet/src/mesh


From: gnunet
Subject: [GNUnet-SVN] r27584 - gnunet/src/mesh
Date: Tue, 25 Jun 2013 15:00:36 +0200

Author: bartpolot
Date: 2013-06-25 15:00:36 +0200 (Tue, 25 Jun 2013)
New Revision: 27584

Modified:
   gnunet/src/mesh/gnunet-service-mesh-new.c
Log:
- make sure not to leak rc on shutdown

Modified: gnunet/src/mesh/gnunet-service-mesh-new.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh-new.c   2013-06-25 13:00:17 UTC (rev 
27583)
+++ gnunet/src/mesh/gnunet-service-mesh-new.c   2013-06-25 13:00:36 UTC (rev 
27584)
@@ -2351,8 +2351,14 @@
     peer_cancel_queues (t->next_hop, t);
     GNUNET_PEER_change_rc (t->next_hop, -1);
   }
-  GNUNET_PEER_change_rc (t->dest, -1);
+  if (0 != t->dest) {
+      struct MeshPeerInfo *pi;
 
+      pi = peer_get_short (t->dest);
+      peer_info_remove_tunnel (pi, t);
+      GNUNET_PEER_change_rc (t->dest, -1);
+  }
+
   if (GNUNET_SCHEDULER_NO_TASK != t->maintenance_task)
     GNUNET_SCHEDULER_cancel (t->maintenance_task);
 
@@ -2501,16 +2507,20 @@
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " Client %u is destination.\n", 
c->id);
     t->client = NULL;
-    GNUNET_PEER_change_rc (t->next_hop, -1);
-    t->next_hop = 0;
+    if (0 != t->next_hop) { /* destroy could come before a path is used */
+        GNUNET_PEER_change_rc (t->next_hop, -1);
+        t->next_hop = 0;
+    }
   }
   else if (c == t->owner)
   {
     struct MeshPeerInfo *p;
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " Client %u is owner.\n", c->id);
     t->owner = NULL;
-    GNUNET_PEER_change_rc (t->prev_hop, -1);
-    t->prev_hop = 0;
+    if (0 != t->prev_hop) { /* destroy could come before a path is used */
+        GNUNET_PEER_change_rc (t->prev_hop, -1);
+        t->prev_hop = 0;
+    }
     p = peer_get_short (t->dest);
     peer_info_remove_tunnel (p, t);
   }




reply via email to

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