gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r34975 - gnunet/src/rps


From: gnunet
Subject: [GNUnet-SVN] r34975 - gnunet/src/rps
Date: Fri, 23 Jan 2015 12:53:41 +0100

Author: ch3
Date: 2015-01-23 12:53:41 +0100 (Fri, 23 Jan 2015)
New Revision: 34975

Modified:
   gnunet/src/rps/gnunet-service-rps.c
   gnunet/src/rps/rps_api.c
   gnunet/src/rps/test_rps_multipeer.c
Log:
taking care of send msg size in the api

Modified: gnunet/src/rps/gnunet-service-rps.c
===================================================================
--- gnunet/src/rps/gnunet-service-rps.c 2015-01-23 01:05:11 UTC (rev 34974)
+++ gnunet/src/rps/gnunet-service-rps.c 2015-01-23 11:53:41 UTC (rev 34975)
@@ -38,8 +38,6 @@
 
 // TODO modify @brief in every file
 
-// TODO take care that messages are not longer than 64k
-
 // TODO check for overflows
 
 // TODO align message structs

Modified: gnunet/src/rps/rps_api.c
===================================================================
--- gnunet/src/rps/rps_api.c    2015-01-23 01:05:11 UTC (rev 34974)
+++ gnunet/src/rps/rps_api.c    2015-01-23 11:53:41 UTC (rev 34975)
@@ -228,11 +228,30 @@
 GNUNET_RPS_seed_ids (struct GNUNET_RPS_Handle *h, uint64_t n,
                      const struct GNUNET_PeerIdentity * ids)
 {
+  uint32_t size_needed;
+  uint32_t tmp_num_peers;
   struct GNUNET_MQ_Envelope *ev;
   struct GNUNET_RPS_CS_SeedMessage *msg;
 
-  // FIXME was not able to find MAX size we are allowed to send
+  size_needed = sizeof (struct GNUNET_RPS_CS_SeedMessage) +
+                n * sizeof (struct GNUNET_PeerIdentity);
 
+  while (GNUNET_SERVER_MAX_MESSAGE_SIZE < size_needed)
+  {
+    tmp_num_peers = (GNUNET_SERVER_MAX_MESSAGE_SIZE -
+        sizeof (struct GNUNET_RPS_CS_SeedMessage)) /
+      sizeof (struct GNUNET_PeerIdentity);
+    n -= tmp_num_peers;
+    size_needed = sizeof (struct GNUNET_RPS_CS_SeedMessage) +
+                  n * sizeof (struct GNUNET_PeerIdentity);
+
+    ev = GNUNET_MQ_msg_extra (msg, tmp_num_peers * sizeof (struct 
GNUNET_PeerIdentity),
+        GNUNET_MESSAGE_TYPE_RPS_CS_SEED);
+    msg->num_peers = GNUNET_htonll (tmp_num_peers);
+    memcpy (&msg[1], ids, tmp_num_peers * sizeof (struct GNUNET_PeerIdentity));
+    GNUNET_MQ_send (h->mq, ev);
+  }
+
   ev = GNUNET_MQ_msg_extra (msg, n * sizeof (struct GNUNET_PeerIdentity),
                             GNUNET_MESSAGE_TYPE_RPS_CS_SEED);
   msg->num_peers = GNUNET_htonll (n);

Modified: gnunet/src/rps/test_rps_multipeer.c
===================================================================
--- gnunet/src/rps/test_rps_multipeer.c 2015-01-23 01:05:11 UTC (rev 34974)
+++ gnunet/src/rps/test_rps_multipeer.c 2015-01-23 11:53:41 UTC (rev 34975)
@@ -207,6 +207,7 @@
                                 request_peers, peer);
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply 
(GNUNET_TIME_UNIT_SECONDS, 10),
                                 seed_peers, peer);
+  // TODO test seeding > GNUNET_SERVER_MAX_MESSAGE_SIZE peers
 }
 
 




reply via email to

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