gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r15176 - in gnunet/src: include mesh


From: gnunet
Subject: [GNUnet-SVN] r15176 - in gnunet/src: include mesh
Date: Fri, 6 May 2011 18:42:29 +0200

Author: bartpolot
Date: 2011-05-06 18:42:29 +0200 (Fri, 06 May 2011)
New Revision: 15176

Modified:
   gnunet/src/include/gnunet_container_lib.h
   gnunet/src/mesh/gnunet-service-mesh.c
Log:
Fixed wrong perception about how doubly linked list work


Modified: gnunet/src/include/gnunet_container_lib.h
===================================================================
--- gnunet/src/include/gnunet_container_lib.h   2011-05-06 16:31:41 UTC (rev 
15175)
+++ gnunet/src/include/gnunet_container_lib.h   2011-05-06 16:42:29 UTC (rev 
15176)
@@ -715,6 +715,7 @@
 
 
 /* ******************** doubly-linked list *************** */
+/* To avoid mistakes: head->prev == tail->next == NULL     */
 
 /**
  * Insert an element at the head of a DLL. Assumes that head, tail and

Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c       2011-05-06 16:31:41 UTC (rev 
15175)
+++ gnunet/src/mesh/gnunet-service-mesh.c       2011-05-06 16:42:29 UTC (rev 
15176)
@@ -348,10 +348,7 @@
     c = clients_head; 
     while(NULL != c) {
         if(c->handle == client) return c;
-        if(c == clients_tail)
-            return NULL;
-        else
-            c = c->next;
+        c = c->next;
     }
     return NULL;
 }
@@ -445,12 +442,9 @@
         if(p->peers[p->length-1] == peer_info->id) {
             break;
         }
-        if(p != peer_info->t->paths_tail) {
-            p = p->next;
-        } else {
-            // TODO ERROR Path not found
-        }
+        p = p->next;
     }
+    if(p == NULL) return 0; // TODO Notify ERROR Path not found
 
     size_needed = sizeof(struct GNUNET_MESH_ManipulatePath)
                   + p->length * sizeof(struct GNUNET_PeerIdentity);
@@ -686,7 +680,6 @@
         } else {
             c = c->next;
         }
-        if(c == clients_head) return; /* Tail already processed? */
     }
     return;
 }
@@ -778,7 +771,6 @@
             GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
             return;
         }
-        if(t == c->tunnels_tail) break;
         t = t->next;
     }
     /* FIXME: calloc? Is NULL != 0 on any platform? */
@@ -898,22 +890,18 @@
 
     /* Tunnel exists? */
     tid = ntohl(peer_msg->tunnel_id);
-    if(NULL == (t = c->tunnels_head)) {
-        GNUNET_break(0);
-        GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
-        return;
-    }
+    t = c->tunnels_head;
     while(NULL != t) {
         if(t->tid == tid) {
             break;
         }
-        if(t == c->tunnels_tail) {
-            GNUNET_break(0);
-            GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
-            return;
-        }
         t = t->next;
     }
+    if(NULL == t) {
+        GNUNET_break(0);
+        GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
+        return;
+    }
 
     /* Does client own tunnel? */
     if(t->client->handle != client) {
@@ -1005,6 +993,11 @@
         }
         t = t->next;
     }
+    if(NULL == t) {
+            GNUNET_break(0);
+            GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
+            return;
+        }
 
     /* Does client own tunnel? */
     if(t->client->handle != client) {
@@ -1028,9 +1021,6 @@
         } else {
             p = p->next;
         }
-        if(p == t->paths_head) {
-            break;
-        }
     }
 
     /*Delete peer info */
@@ -1046,9 +1036,6 @@
         } else {
             peer_info = peer_info->next;
         }
-        if(peer_info == t->peers_head) {
-            break;
-        }
     }
 
     GNUNET_PEER_change_rc(peer_id, -1);
@@ -1093,22 +1080,18 @@
 
     /* Tunnel exists? */
     tid = ntohl(connect_msg->tunnel_id);
-    if(NULL == (t = c->tunnels_head)) {
-        GNUNET_break(0);
-        GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
-        return;
-    }
+    t = c->tunnels_head;
     while(NULL != t) {
         if(t->tid == tid) {
             break;
         }
-        if(t == c->tunnels_tail) {
-            GNUNET_break(0);
-            GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
-            return;
-        }
         t = t->next;
     }
+    if(NULL == t) {
+        GNUNET_break(0);
+        GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
+        return;
+    }
 
     /* Does client own tunnel? */
     if(t->client->handle != client) {
@@ -1159,22 +1142,18 @@
 
     /* Tunnel exists? */
     tid = ntohl(data_msg->tunnel_id);
-    if(NULL == (t = c->tunnels_head)) {
-        GNUNET_break(0);
-        GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
-        return;
-    }
+    t = c->tunnels_head;
     while(NULL != t) {
         if(t->tid == tid) {
             break;
         }
-        if(t == c->tunnels_tail) {
-            GNUNET_break(0);
-            GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
-            return;
-        }
         t = t->next;
     }
+    if(NULL == t) {
+        GNUNET_break(0);
+        GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
+        return;
+    }
 
     /* Does client own tunnel? */
     if(t->client->handle != client) {
@@ -1222,22 +1201,18 @@
 
     /* Tunnel exists? */
     tid = ntohl(data_msg->tunnel_id);
-    if(NULL == (t = c->tunnels_head)) {
-        GNUNET_break(0);
-        GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
-        return;
-    }
+    t = c->tunnels_head;
     while(NULL != t) {
         if(t->tid == tid) {
             break;
         }
-        if(t == c->tunnels_tail) {
-            GNUNET_break(0);
-            GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
-            return;
-        }
         t = t->next;
     }
+    if(NULL == t) {
+        GNUNET_break(0);
+        GNUNET_SERVER_receive_done(client, GNUNET_SYSERR);
+        return;
+    }
 
     /* Does client own tunnel? */
     if(t->client->handle != client) {




reply via email to

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