gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r35685 - gnunet/src/dht


From: gnunet
Subject: [GNUnet-SVN] r35685 - gnunet/src/dht
Date: Thu, 30 Apr 2015 11:11:25 +0200

Author: grothoff
Date: 2015-04-30 11:11:25 +0200 (Thu, 30 Apr 2015)
New Revision: 35685

Modified:
   gnunet/src/dht/gnunet-service-wdht_neighbours.c
Log:
-fixing 'delete_trail()'


Modified: gnunet/src/dht/gnunet-service-wdht_neighbours.c
===================================================================
--- gnunet/src/dht/gnunet-service-wdht_neighbours.c     2015-04-30 08:57:59 UTC 
(rev 35684)
+++ gnunet/src/dht/gnunet-service-wdht_neighbours.c     2015-04-30 09:11:25 UTC 
(rev 35685)
@@ -623,126 +623,49 @@
   struct FriendInfo *friend;
   struct GNUNET_MQ_Envelope *env;
   struct TrailDestroyMessage *tdm;
-  struct Trail *current;
+  struct Finger *finger;
 
-  tdm = GNUNET_new(struct TrailDestroyMessage);
-  current = trail;
-
-  if (inform_pred)
+  friend = current->pred;
+  if (NULL != friend)
   {
-    struct Trail *previous_pred;
-    struct Trail *next_pred;
-    tdm->trail_id = current->pred_id;
-    friend = current->pred;
-
-    while( NULL != current)
+    if (GNUNET_YES == inform_pred)
     {
-      if (NULL != friend)
-      {
-        env = GNUNET_MQ_msg (tdm,
-                             GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
-        GNUNET_MQ_send (friend->mq,
-                        env);
-      }
-
-      next_pred = current->next_pred;
-      previous_pred = current->prev_pred;
-
-      /* Freeing current trail memory */
-      GNUNET_free(current);
-
-      /* Destroying the next successor list */
-      while(NULL != previous_pred)
-      {
-        struct Trail *tmp;
-        if (NULL != friend)
-        {
-          env = GNUNET_MQ_msg (tdm,
-                               GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
-          GNUNET_MQ_send (friend->mq,
-                          env);
-        }
-
-        tmp = next_pred;
-        next_pred = next_pred->next_pred;
-        GNUNET_free(tmp);
-      }
-
-      /* Destroying the next predecessor list */
-      while(NULL != next_pred)
-      {
-        struct Trail *tmp;
-        if (NULL != friend)
-        {
-          env = GNUNET_MQ_msg (tdm,
-                               GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
-          GNUNET_MQ_send (friend->mq,
-                          env);
-        }
-
-        tmp = next_pred;
-        next_pred = next_pred->next_pred;
-        GNUNET_free(tmp);
-      }
+      env = GNUNET_MQ_msg (tdm,
+                           GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
+      tdm->trail_id = current->pred_id;
+      GNUNET_MQ_send (friend->mq,
+                      env);
     }
+    GNUNET_CONTAINER_MDLL_remove (pred,
+                                  friend->pred_head,
+                                  friend->pred_tail,
+                                  trail);
   }
-
-  if (inform_succ)
+  friend = current->succ;
+  if (NULL != friend)
   {
-    struct Trail *previous_succ;
-    struct Trail *next_succ;
-    tdm->trail_id = current->succ_id;
-    friend = current->succ;
-
-    while( NULL != current)
+    if (GNUNET_YES == inform_succ)
     {
-      if (NULL != friend)
-      {
-        env = GNUNET_MQ_msg (tdm,
-                             GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
-        GNUNET_MQ_send (friend->mq,
-                        env);
-      }
-
-      next_succ = current->next_succ;
-      previous_succ = current->prev_succ;
-
-      /* Freeing current trail memory */
-      GNUNET_free(current);
-
-      /* Destroying the next successor list */
-      while(NULL != previous_succ)
-      {
-        struct Trail *tmp;
-        if (NULL != friend)
-        {
-          env = GNUNET_MQ_msg (tdm,
-                               GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
-          GNUNET_MQ_send (friend->mq,
-                          env);
-        }
-        tmp = next_succ;
-        previous_succ = previous_succ->prev_succ;
-        GNUNET_free(tmp);
-      }
-
-      /* Destroying the next successor list */
-      while(NULL != next_succ)
-      {
-        struct Trail *tmp;
-        if (NULL != friend)
-        {
-          env = GNUNET_MQ_msg (tdm,
-                               GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
-          GNUNET_MQ_send (friend->mq,
-                          env);
-        }
-        tmp = next_succ;
-        next_succ = next_succ->next_pred;
-        GNUNET_free(tmp);
-      }
+      env = GNUNET_MQ_msg (tdm,
+                           GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
+      tdm->trail_id = current->pred_id;
+      GNUNET_MQ_send (friend->mq,
+                      env);
     }
+    GNUNET_CONTAINER_MDLL_remove (succ,
+                                  friend->pred_head,
+                                  friend->pred_tail,
+                                  trail);
   }
+  GNUNET_break (trail ==
+                GNUNET_CONTAINER_heap_remove_node (trail->hn));
+  finger = *trail->finger;
+  if (NULL != finger)
+  {
+    *trail->finger = NULL;
+    GNUNET_free (finger);
+  }
+  GNUNET_free (trail);
 }
 
 




reply via email to

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