aboutsummaryrefslogtreecommitdiff
path: root/src/dht
diff options
context:
space:
mode:
authorArthur Dewarumez <arthur.dewarumez@etudiant.univ-lille1.fr>2015-04-30 08:57:59 +0000
committerArthur Dewarumez <arthur.dewarumez@etudiant.univ-lille1.fr>2015-04-30 08:57:59 +0000
commit3393c742cb57c9b036853ca8b426ed3fdf2357fd (patch)
tree5b3c6c72b97fec11aa7f0d86b5749250b4e4e2de /src/dht
parent66872cf6ba34329254c82cf948fef333e5dc4c9c (diff)
downloadgnunet-3393c742cb57c9b036853ca8b426ed3fdf2357fd.tar.gz
gnunet-3393c742cb57c9b036853ca8b426ed3fdf2357fd.zip
Add delete_trail function.
Diffstat (limited to 'src/dht')
-rw-r--r--src/dht/gnunet-service-wdht_neighbours.c125
1 files changed, 123 insertions, 2 deletions
diff --git a/src/dht/gnunet-service-wdht_neighbours.c b/src/dht/gnunet-service-wdht_neighbours.c
index 3ce65978d..68b05d2eb 100644
--- a/src/dht/gnunet-service-wdht_neighbours.c
+++ b/src/dht/gnunet-service-wdht_neighbours.c
@@ -620,7 +620,129 @@ delete_trail (struct Trail *trail,
620 int inform_pred, 620 int inform_pred,
621 int inform_succ) 621 int inform_succ)
622{ 622{
623 // ... FIXME 623 struct FriendInfo *friend;
624 struct GNUNET_MQ_Envelope *env;
625 struct TrailDestroyMessage *tdm;
626 struct Trail *current;
627
628 tdm = GNUNET_new(struct TrailDestroyMessage);
629 current = trail;
630
631 if (inform_pred)
632 {
633 struct Trail *previous_pred;
634 struct Trail *next_pred;
635 tdm->trail_id = current->pred_id;
636 friend = current->pred;
637
638 while( NULL != current)
639 {
640 if (NULL != friend)
641 {
642 env = GNUNET_MQ_msg (tdm,
643 GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
644 GNUNET_MQ_send (friend->mq,
645 env);
646 }
647
648 next_pred = current->next_pred;
649 previous_pred = current->prev_pred;
650
651 /* Freeing current trail memory */
652 GNUNET_free(current);
653
654 /* Destroying the next successor list */
655 while(NULL != previous_pred)
656 {
657 struct Trail *tmp;
658 if (NULL != friend)
659 {
660 env = GNUNET_MQ_msg (tdm,
661 GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
662 GNUNET_MQ_send (friend->mq,
663 env);
664 }
665
666 tmp = next_pred;
667 next_pred = next_pred->next_pred;
668 GNUNET_free(tmp);
669 }
670
671 /* Destroying the next predecessor list */
672 while(NULL != next_pred)
673 {
674 struct Trail *tmp;
675 if (NULL != friend)
676 {
677 env = GNUNET_MQ_msg (tdm,
678 GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
679 GNUNET_MQ_send (friend->mq,
680 env);
681 }
682
683 tmp = next_pred;
684 next_pred = next_pred->next_pred;
685 GNUNET_free(tmp);
686 }
687 }
688 }
689
690 if (inform_succ)
691 {
692 struct Trail *previous_succ;
693 struct Trail *next_succ;
694 tdm->trail_id = current->succ_id;
695 friend = current->succ;
696
697 while( NULL != current)
698 {
699 if (NULL != friend)
700 {
701 env = GNUNET_MQ_msg (tdm,
702 GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
703 GNUNET_MQ_send (friend->mq,
704 env);
705 }
706
707 next_succ = current->next_succ;
708 previous_succ = current->prev_succ;
709
710 /* Freeing current trail memory */
711 GNUNET_free(current);
712
713 /* Destroying the next successor list */
714 while(NULL != previous_succ)
715 {
716 struct Trail *tmp;
717 if (NULL != friend)
718 {
719 env = GNUNET_MQ_msg (tdm,
720 GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
721 GNUNET_MQ_send (friend->mq,
722 env);
723 }
724 tmp = next_succ;
725 previous_succ = previous_succ->prev_succ;
726 GNUNET_free(tmp);
727 }
728
729 /* Destroying the next successor list */
730 while(NULL != next_succ)
731 {
732 struct Trail *tmp;
733 if (NULL != friend)
734 {
735 env = GNUNET_MQ_msg (tdm,
736 GNUNET_MESSAGE_TYPE_WDHT_TRAIL_DESTROY);
737 GNUNET_MQ_send (friend->mq,
738 env);
739 }
740 tmp = next_succ;
741 next_succ = next_succ->next_pred;
742 GNUNET_free(tmp);
743 }
744 }
745 }
624} 746}
625 747
626 748
@@ -655,7 +777,6 @@ GDS_NEIGHBOURS_send_get_result (const struct GNUNET_HashCode *key,
655 // the lookup... 777 // the lookup...
656} 778}
657 779
658
659/** 780/**
660 * Method called whenever a peer disconnects. 781 * Method called whenever a peer disconnects.
661 * 782 *