Allowed to destroy NULL paths
[oweals/gnunet.git] / src / mesh / test_mesh_small.c
index f100a40e499b1a2d4b7f0df964a31e4cd2e534e9..cf647be566da213f95d8ec333540c553f4919087 100644 (file)
@@ -140,8 +140,6 @@ static GNUNET_SCHEDULER_TaskIdentifier shutdown_handle;
 
 static char *topology_file;
 
-static char *data_filename;
-
 static struct GNUNET_TESTING_Daemon *d1;
 
 static GNUNET_PEER_Id pid1;
@@ -479,11 +477,11 @@ static void
 do_test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "***************** test: test_task\n");
-  GNUNET_MESH_peer_request_connect_add(t, &d2->id);
   if (test == MULTICAST)
   {
     GNUNET_MESH_peer_request_connect_add(t, &d3->id);
   }
+  GNUNET_MESH_peer_request_connect_add(t, &d2->id);
   if (GNUNET_SCHEDULER_NO_TASK != disconnect_task)
   {
     GNUNET_SCHEDULER_cancel (disconnect_task);
@@ -520,8 +518,14 @@ topo_cb (void *cls,
   if (p1 == pid1)
   {
     p2 = GNUNET_PEER_search(second);
-    GNUNET_assert(p2 < num_peers);
-    GNUNET_assert(p2 > 0);
+    if (p2 == 0 || p2 > num_peers)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                  "***************** test: %s is UNKNOWN!? (%u)\n",
+                  GNUNET_i2s(second),
+                  p2);
+      return;
+    }
     mesh_peers[p2]++;
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "***************** test: %s IS a neighbor\n",
@@ -532,8 +536,14 @@ topo_cb (void *cls,
   if (p1 == pid1)
   {
     p2 = GNUNET_PEER_search(first);
-    GNUNET_assert(p2 < num_peers);
-    GNUNET_assert(p2 > 0);
+    if (p2 == 0 || p2 > num_peers)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                  "***************** test: %s is UNKNOWN!? (%u)\n",
+                  GNUNET_i2s(first),
+                  p2);
+      return;
+    }
     mesh_peers[p2]++;
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "***************** test: %s IS a neighbor\n",
@@ -753,6 +763,7 @@ run (void *cls, char *const *args, const char *cfgfile,
   char *temp_str;
   unsigned long long temp_wait;
   struct GNUNET_TESTING_Host *hosts;
+  char *data_filename;
 
   ok = 0;
   testing_cfg = GNUNET_CONFIGURATION_dup (cfg);
@@ -801,27 +812,23 @@ run (void *cls, char *const *args, const char *cfgfile,
     return;
   }
 
-  if (GNUNET_OK !=
+  if (GNUNET_OK ==
       GNUNET_CONFIGURATION_get_value_string (testing_cfg, "test_mesh_small",
                                              "data_output_file",
                                              &data_filename))
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Option test_mesh_small:data_output_file is required!\n");
-    return;
-  }
-
-  data_file =
+    data_file =
       GNUNET_DISK_file_open (data_filename,
                              GNUNET_DISK_OPEN_READWRITE |
                              GNUNET_DISK_OPEN_CREATE,
                              GNUNET_DISK_PERM_USER_READ |
                              GNUNET_DISK_PERM_USER_WRITE);
-  if (data_file == NULL)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Failed to open %s for output!\n",
-                data_filename);
-    GNUNET_free (data_filename);
+    if (data_file == NULL)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Failed to open %s for output!\n",
+                 data_filename);
+      GNUNET_free (data_filename);
+    }
   }
 
   wait_time =