stop peer before destroying it
[oweals/gnunet.git] / src / testbed / gnunet-service-testbed.c
index 42a15c627bcb6a1295965cc3f018608506f48dd2..9c4b906535d03a262c742e67ed5db06c113bc51d 100644 (file)
@@ -58,7 +58,7 @@
 /**
  * Default timeout for operations which may take some time
  */
-#define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 30)
+#define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 60)
 
 /**
  * The main context information associated with the client which started us
@@ -996,13 +996,16 @@ route_list_add (struct Route *route)
 static void
 slave_list_add (struct Slave *slave)
 {
+  uint32_t orig_size;
+
+  orig_size = slave_list_size;  
   if (slave->host_id >= slave_list_size)
   {
+    while (slave->host_id >= slave_list_size)
+      slave_list_size += LIST_GROW_STEP;
     slave_list =
-        TESTBED_realloc (slave_list, sizeof (struct Slave *) * slave_list_size,
-                         sizeof (struct Slave *) * (slave_list_size +
-                                                    LIST_GROW_STEP));
-    slave_list_size += LIST_GROW_STEP;
+        TESTBED_realloc (slave_list, sizeof (struct Slave *) * orig_size,
+                         sizeof (struct Slave *) * slave_list_size);
   }
   GNUNET_assert (NULL == slave_list[slave->host_id]);
   slave_list[slave->host_id] = slave;
@@ -2318,6 +2321,11 @@ handle_peer_destroy (void *cls, struct GNUNET_SERVER_Client *client,
     GNUNET_SERVER_receive_done (client, GNUNET_OK);
     return;
   }
+  if (GNUNET_YES == peer->details.local.is_running)
+  {
+    GNUNET_TESTING_peer_stop (peer->details.local.peer);
+    peer->details.local.is_running = GNUNET_NO;
+  }
   GNUNET_TESTING_peer_destroy (peer->details.local.peer);
   GNUNET_CONFIGURATION_destroy (peer->details.local.cfg);
   peer_list_remove (peer);