gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r23192 - gnunet/src/testbed


From: gnunet
Subject: [GNUnet-SVN] r23192 - gnunet/src/testbed
Date: Fri, 10 Aug 2012 09:34:14 +0200

Author: harsha
Date: 2012-08-10 09:34:14 +0200 (Fri, 10 Aug 2012)
New Revision: 23192

Modified:
   gnunet/src/testbed/gnunet-service-testbed.c
Log:
cleaner peer destory

Modified: gnunet/src/testbed/gnunet-service-testbed.c
===================================================================
--- gnunet/src/testbed/gnunet-service-testbed.c 2012-08-09 21:45:42 UTC (rev 
23191)
+++ gnunet/src/testbed/gnunet-service-testbed.c 2012-08-10 07:34:14 UTC (rev 
23192)
@@ -677,6 +677,32 @@
 
 
 /**
+ * Removes a the give peer from the peer array
+ *
+ * @param peer the peer to be removed
+ */
+static void
+peer_list_remove (struct Peer *peer)
+{
+  uint32_t id;
+
+  peer_list[peer->id] = NULL;
+  while (peer_list_size >= LIST_GROW_STEP)
+  {
+    for (id = peer_list_size - 1;
+         id > peer_list_size - LIST_GROW_STEP; id--)
+      if (NULL != peer_list[id])
+        break;
+    if (id != peer_list_size - LIST_GROW_STEP)
+      break;
+    peer_list_size -= LIST_GROW_STEP;
+  }
+  peer_list = GNUNET_realloc (peer_list, sizeof (struct GNUNET_TESTBED_Peer*)
+                              * peer_list_size);
+}
+
+
+/**
  * Routes message to a host given its host_id
  *
  * @param host_id the id of the destination host
@@ -1369,36 +1395,26 @@
 {
   const struct GNUNET_TESTBED_PeerDestroyMessage *msg;
   struct GNUNET_TESTBED_GenericOperationSuccessEventMessage *reply;
+  struct Peer *peer;
   uint32_t peer_id;
-  uint32_t id;
   uint16_t reply_size;
   
   msg = (const struct GNUNET_TESTBED_PeerDestroyMessage *) message;
   peer_id = ntohl (msg->peer_id);
   LOG_DEBUG ("Received peer destory on peer: %u and operation id: %ul\n",
-             peer_id, GNUNET_ntohll (msg->operation_id));
+             peer_id, GNUNET_ntohll (msg->operation_id));  
   if ((peer_list_size <= peer_id) || (NULL == peer_list[peer_id]))
   {
     GNUNET_break (0);
     /* FIXME: Reply with failure event message or forward to slave controller 
*/
     GNUNET_SERVER_receive_done (client, GNUNET_OK);
     return;
-  }  
-  GNUNET_TESTING_peer_destroy (peer_list[peer_id]->peer);
-  GNUNET_CONFIGURATION_destroy (peer_list[peer_id]->cfg);
-  GNUNET_free (peer_list[peer_id]);
-  peer_list[peer_id] = NULL;
-  for (id = 0; id < LIST_GROW_STEP; id++)
-  {
-    if (((peer_id + id >= peer_list_size) ||
-         (NULL != peer_list[peer_id])))
-      break;
   }
-  if (LIST_GROW_STEP == id)
-  {
-    peer_list_size -= LIST_GROW_STEP;
-    peer_list = GNUNET_realloc (peer_list, peer_list_size);
-  }
+  peer = peer_list[peer_id];
+  GNUNET_TESTING_peer_destroy (peer->peer);
+  GNUNET_CONFIGURATION_destroy (peer->cfg);
+  peer_list_remove (peer);
+  GNUNET_free (peer);
   reply_size = 
     sizeof (struct GNUNET_TESTBED_GenericOperationSuccessEventMessage);
   reply = GNUNET_malloc (reply_size);




reply via email to

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