gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r30900 - gnunet/src/dv


From: gnunet
Subject: [GNUnet-SVN] r30900 - gnunet/src/dv
Date: Wed, 27 Nov 2013 09:59:35 +0100

Author: wachs
Date: 2013-11-27 09:59:35 +0100 (Wed, 27 Nov 2013)
New Revision: 30900

Modified:
   gnunet/src/dv/gnunet-service-dv.c
Log:
- FIX: GNUNET_SET_STATUS_HALF_DONE is never called only GNUNET_SET_STATUS_DONE
- FIX: Crash since neighbor_table == NULL on removal check


Modified: gnunet/src/dv/gnunet-service-dv.c
===================================================================
--- gnunet/src/dv/gnunet-service-dv.c   2013-11-27 08:41:49 UTC (rev 30899)
+++ gnunet/src/dv/gnunet-service-dv.c   2013-11-27 08:59:35 UTC (rev 30900)
@@ -1409,6 +1409,9 @@
     }
     target = GNUNET_new (struct Target);
     memcpy (target, element->data, sizeof (struct Target));
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Received information about peer `%s' with distance %u\n",
+                GNUNET_i2s (&target->peer), ntohl(target->distance));
     if (NULL == neighbor->neighbor_table_consensus)
       neighbor->neighbor_table_consensus = 
GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
     if (GNUNET_YES !=
@@ -1442,36 +1445,38 @@
                                                              neighbor);
     break;
   case GNUNET_SET_STATUS_HALF_DONE:
+    break;
+  case GNUNET_SET_STATUS_DONE:
     /* we got all of our updates; integrate routing table! */
     neighbor->target_removed = GNUNET_NO;
-    GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table,
-                                          &check_target_removed,
-                                          neighbor);
+    if (NULL == neighbor->neighbor_table_consensus)
+      neighbor->neighbor_table_consensus = 
GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
+    if (NULL != neighbor->neighbor_table)
+      GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table,
+                                           &check_target_removed,
+                                           neighbor);
     if (GNUNET_YES == neighbor->target_removed)
     {
       /* check if we got an alternative for the removed routes */
       GNUNET_CONTAINER_multipeermap_iterate (direct_neighbors,
-                                            &refresh_routes,
-                                            NULL);
+                                             &refresh_routes,
+                                             NULL);
     }
     /* add targets that appeared (and check for improved routes) */
-    if (NULL == neighbor->neighbor_table_consensus)
-      neighbor->neighbor_table_consensus = 
GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
     GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table_consensus,
-                                          &check_target_added,
-                                          neighbor);
+                                           &check_target_added,
+                                           neighbor);
     if (NULL != neighbor->neighbor_table)
     {
       GNUNET_CONTAINER_multipeermap_iterate (neighbor->neighbor_table,
-                                            &free_targets,
-                                            NULL);
+                                             &free_targets,
+                                             NULL);
       GNUNET_CONTAINER_multipeermap_destroy (neighbor->neighbor_table);
       neighbor->neighbor_table = NULL;
     }
     neighbor->neighbor_table = neighbor->neighbor_table_consensus;
     neighbor->neighbor_table_consensus = NULL;
-    break;
-  case GNUNET_SET_STATUS_DONE:
+
     /* operation done, schedule next run! */
     neighbor->set_op = NULL;
     if (0 < memcmp (&neighbor->peer,




reply via email to

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