gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r30860 - gnunet/src/dv


From: gnunet
Subject: [GNUnet-SVN] r30860 - gnunet/src/dv
Date: Mon, 25 Nov 2013 15:29:55 +0100

Author: wachs
Date: 2013-11-25 15:29:54 +0100 (Mon, 25 Nov 2013)
New Revision: 30860

Modified:
   gnunet/src/dv/gnunet-service-dv.c
Log:
remember direct route to be released on direct disconnect


Modified: gnunet/src/dv/gnunet-service-dv.c
===================================================================
--- gnunet/src/dv/gnunet-service-dv.c   2013-11-25 14:10:00 UTC (rev 30859)
+++ gnunet/src/dv/gnunet-service-dv.c   2013-11-25 14:29:54 UTC (rev 30860)
@@ -249,9 +249,17 @@
    */
   unsigned int pm_queue_size;
 
+  /**
+   * Elements in consensus
+   */
   unsigned int consensus_elements;
 
   /**
+   * Direct one hop route
+   */
+  struct Route *direct_route;
+
+  /**
    * Flag set within 'check_target_removed' to trigger full global route 
refresh.
    */
   int target_removed;
@@ -846,11 +854,11 @@
     GNUNET_free (route);
   }
 
-  route = GNUNET_new (struct Route);
-  route->next_hop = neighbor;
-  route->target.peer= neighbor->peer;
-  route->target.distance = DIRECT_NEIGHBOR_COST;
-  allocate_route (route, DIRECT_NEIGHBOR_COST);
+  neighbor->direct_route = GNUNET_new (struct Route);
+  neighbor->direct_route->next_hop = neighbor;
+  neighbor->direct_route->target.peer= neighbor->peer;
+  neighbor->direct_route->target.distance = DIRECT_NEIGHBOR_COST;
+  allocate_route (neighbor->direct_route, DIRECT_NEIGHBOR_COST);
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Adding direct route to %s\n",
@@ -1096,6 +1104,14 @@
     GNUNET_CORE_notify_transmit_ready_cancel (neighbor->cth);
     neighbor->cth = NULL;
   }
+
+  if (NULL != neighbor->direct_route)
+  {
+    release_route(neighbor->direct_route);
+    GNUNET_free (neighbor->direct_route);
+    neighbor->direct_route = NULL;
+  }
+
   if (NULL != neighbor->neighbor_table_consensus)
   {
     GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table_consensus,
@@ -1709,6 +1725,7 @@
   neighbor->connected = GNUNET_NO;
   if (DIRECT_NEIGHBOR_COST == neighbor->distance)
   {
+
     GNUNET_STATISTICS_update (stats,
                              "# peers connected (1-hop)",
                              -1, GNUNET_NO);




reply via email to

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