[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);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r27584 - gnunet/src/mesh,
gnunet <=