[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r35684 - gnunet/src/dht
From: |
gnunet |
Subject: |
[GNUnet-SVN] r35684 - gnunet/src/dht |
Date: |
Thu, 30 Apr 2015 10:57:59 +0200 |
Author: arthur
Date: 2015-04-30 10:57:59 +0200 (Thu, 30 Apr 2015)
New Revision: 35684
Modified:
gnunet/src/dht/gnunet-service-wdht_neighbours.c
Log:
Add delete_trail function.
Modified: gnunet/src/dht/gnunet-service-wdht_neighbours.c
===================================================================
--- gnunet/src/dht/gnunet-service-wdht_neighbours.c 2015-04-30 08:00:51 UTC
(rev 35683)
+++ gnunet/src/dht/gnunet-service-wdht_neighbours.c 2015-04-30 08:57:59 UTC
(rev 35684)
@@ -620,7 +620,129 @@
int inform_pred,
int inform_succ)
{
- // ... FIXME
+ struct FriendInfo *friend;
+ struct GNUNET_MQ_Envelope *env;
+ struct TrailDestroyMessage *tdm;
+ struct Trail *current;
+
+ tdm = GNUNET_new(struct TrailDestroyMessage);
+ current = trail;
+
+ if (inform_pred)
+ {
+ struct Trail *previous_pred;
+ struct Trail *next_pred;
+ tdm->trail_id = current->pred_id;
+ friend = current->pred;
+
+ while( NULL != current)
+ {
+ 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);
+ }
+ }
+ }
+
+ if (inform_succ)
+ {
+ struct Trail *previous_succ;
+ struct Trail *next_succ;
+ tdm->trail_id = current->succ_id;
+ friend = current->succ;
+
+ while( NULL != current)
+ {
+ 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);
+ }
+ }
+ }
}
@@ -655,7 +777,6 @@
// the lookup...
}
-
/**
* Method called whenever a peer disconnects.
*
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r35684 - gnunet/src/dht,
gnunet <=