gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r23525 - gnunet/src/testbed
Date: Thu, 30 Aug 2012 21:52:10 +0200

Author: harsha
Date: 2012-08-30 21:52:10 +0200 (Thu, 30 Aug 2012)
New Revision: 23525

Modified:
   gnunet/src/testbed/gnunet-service-testbed.c
Log:
peer_list handling fixes

Modified: gnunet/src/testbed/gnunet-service-testbed.c
===================================================================
--- gnunet/src/testbed/gnunet-service-testbed.c 2012-08-30 19:17:17 UTC (rev 
23524)
+++ gnunet/src/testbed/gnunet-service-testbed.c 2012-08-30 19:52:10 UTC (rev 
23525)
@@ -781,19 +781,23 @@
 peer_list_remove (struct Peer *peer)
 {
   uint32_t id;
+  uint32_t orig_size;
 
   peer_list[peer->id] = NULL;
+  orig_size = peer_list_size;
   while (peer_list_size >= LIST_GROW_STEP)
   {
     for (id = peer_list_size - 1;
-         id > peer_list_size - LIST_GROW_STEP; id--)
+         (id >= peer_list_size - LIST_GROW_STEP) && (id != UINT32_MAX); id--)
       if (NULL != peer_list[id])
         break;
-    if (id != peer_list_size - LIST_GROW_STEP)
+    if (id != ((peer_list_size - LIST_GROW_STEP) - 1))
       break;
     peer_list_size -= LIST_GROW_STEP;
   }
-  peer_list = GNUNET_realloc (peer_list, sizeof (struct GNUNET_TESTBED_Peer*)
+  if (orig_size == peer_list_size)
+    return;
+  peer_list = GNUNET_realloc (peer_list, sizeof (struct Peer *) 
                               * peer_list_size);
 }
 
@@ -1607,6 +1611,7 @@
   int ret;
   uint32_t config_size;
   uint32_t host_id;
+  uint32_t peer_id;
   uint16_t msize;
   
 
@@ -1619,6 +1624,14 @@
   }
   msg = (const struct GNUNET_TESTBED_PeerCreateMessage *) message;
   host_id = ntohl (msg->host_id);
+  peer_id = ntohl (msg->peer_id);
+  if (UINT32_MAX == peer_id)
+  {
+    send_operation_fail_msg (client, GNUNET_ntohll (msg->operation_id),
+                             "Cannot create peer with given ID");
+    GNUNET_SERVER_receive_done (client, GNUNET_OK);
+    return;
+  }
   if (host_id == master_context->host_id)
   {
     char *emsg;
@@ -1655,7 +1668,7 @@
     peer = GNUNET_malloc (sizeof (struct Peer));
     peer->is_remote = GNUNET_NO;
     peer->details.local.cfg = cfg;
-    peer->id = ntohl (msg->peer_id);
+    peer->id = peer_id;
     LOG_DEBUG ("Creating peer with id: %u\n", peer->id);
     peer->details.local.peer = 
       GNUNET_TESTING_peer_configure (master_context->system,




reply via email to

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