gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r15133 - gnunet/src/mesh


From: gnunet
Subject: [GNUnet-SVN] r15133 - gnunet/src/mesh
Date: Mon, 2 May 2011 12:59:03 +0200

Author: bartpolot
Date: 2011-05-02 12:59:03 +0200 (Mon, 02 May 2011)
New Revision: 15133

Modified:
   gnunet/src/mesh/gnunet-service-mesh.c
Log:
WiP


Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c       2011-05-02 10:51:57 UTC (rev 
15132)
+++ gnunet/src/mesh/gnunet-service-mesh.c       2011-05-02 10:59:03 UTC (rev 
15133)
@@ -859,11 +859,11 @@
     struct Client                       *c;
     struct MESH_tunnel                  *t;
     struct Path                         *p;
-    struct Path                         *aux;
+    struct Path                         *aux_path;
     MESH_TunnelID                       tid;
     GNUNET_PEER_Id                      peer_id;
     struct PeerInfo                     *peer_info;
-    int                                 i;
+    struct PeerInfo                     *aux_peer_info;
 
     /* Sanity check for client registration */
     if(NULL == (c = client_retrieve(client))) {
@@ -905,18 +905,18 @@
         return;
     }
 
-    /* Ok, delete peer from tunnel */   
+    /* Ok, delete peer from tunnel */
     p = t->paths_head;
     peer_id = GNUNET_PEER_intern(&peer_msg->peer);
+
+    /* Delete paths */
     while(p != NULL) {
         if(p->peers[p->length-1] == peer_id) {
             GNUNET_CONTAINER_DLL_remove(t->paths_head, t->paths_tail, p);
-            for(i = 0; i < p->length; i++) {
-                GNUNET_PEER_change_rc(p->peers[i], -1);
-            }
-            aux = p;
+            GNUNET_PEER_decrement_rcs(p->peers, p->length);
+            aux_path = p;
             p = p->next;
-            GNUNET_free(aux);
+            GNUNET_free(aux_path);
         } else {
             p = p->next;
         }
@@ -924,6 +924,25 @@
             break;
         }
     }
+
+    /*Delete peer info */
+    peer_info = t->peers_head;
+    while(peer_info != NULL) {
+        if(peer_info->id == peer_id) {
+            GNUNET_CONTAINER_DLL_remove(t->peers_head,
+                                        t->peers_tail,
+                                        peer_info);
+            aux_peer_info = peer_info;
+            peer_info = peer_info->next;
+            GNUNET_free(aux_peer_info);
+        } else {
+            peer_info = peer_info->next;
+        }
+        if(peer_info == t->peers_head) {
+            break;
+        }
+    }
+
     GNUNET_PEER_change_rc(peer_id, -1);
 
     GNUNET_SERVER_receive_done(client, GNUNET_OK);




reply via email to

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