simplify check_data logic
authorChristian Grothoff <christian@grothoff.org>
Sun, 22 Jan 2017 22:25:25 +0000 (23:25 +0100)
committerChristian Grothoff <christian@grothoff.org>
Sun, 22 Jan 2017 22:25:25 +0000 (23:25 +0100)
src/cadet/gnunet-service-cadet-new.c
src/cadet/gnunet-service-cadet-new_channel.c
src/cadet/test_cadet.c

index 76bc4ec48e48163695328974cc6cc348f87565cd..cb8eab2fe3a6cd28eacc1eaf02b830148e9096fc 100644 (file)
@@ -629,30 +629,33 @@ check_data (void *cls,
   const char *buf;
   struct GNUNET_MessageHeader pa;
 
+  /* FIXME: what is the format we shall allow for @a msg?
+     ONE payload item or multiple? Seems current cadet_api
+     at least in theory allows more than one. Next-gen
+     cadet_api will likely no more.
+
+     Regardless, the multi-message check below should pass,
+     albeit it does not :-(. */
   /* Sanity check for message size */
   payload_size = ntohs (msg->header.size) - sizeof (*msg);
-  if ( (payload_size < sizeof (struct GNUNET_MessageHeader)) ||
-       (GNUNET_CONSTANTS_MAX_CADET_MESSAGE_SIZE < payload_size) )
-  {
-    GNUNET_break (0);
-    return GNUNET_SYSERR;
-  }
   buf = (const char *) &msg[1];
-  do {
+  while (payload_size >= sizeof (struct GNUNET_MessageHeader))
+  {
     /* need to memcpy() for alignment */
     GNUNET_memcpy (&pa,
                    buf,
                    sizeof (pa));
     payload_claimed_size = ntohs (pa.size);
     if ( (payload_size < payload_claimed_size) ||
-         (0 == payload_claimed_size) )
+         (payload_claimed_size < sizeof (struct GNUNET_MessageHeader)) ||
+         (GNUNET_CONSTANTS_MAX_CADET_MESSAGE_SIZE < payload_claimed_size) )
     {
       GNUNET_break_op (0);
       return GNUNET_SYSERR;
     }
     payload_size -= payload_claimed_size;
     buf += payload_claimed_size;
-  } while (payload_size >= sizeof (struct GNUNET_MessageHeader));
+  }
   if (0 != payload_size)
   {
     GNUNET_break_op (0);
index 42565d2762e2b5de1b7656f4e5829ea8f453f76d..b92c4eaf55756f8828176ce2471d936b1a090ddd 100644 (file)
@@ -1294,7 +1294,7 @@ GCCH_handle_local_data (struct CadetChannel *ch,
 
   if (GNUNET_NO == ch->client_allowed)
   {
-    GNUNET_break_op (0);
+    GNUNET_break (0);
     return GNUNET_SYSERR;
   }
   ch->client_allowed = GNUNET_NO;
index a411b41bc2863caec7af7433b14da304c4db78cc..b19963bba22f7ba06e522e92e90611b4668a19ff 100644 (file)
@@ -536,7 +536,9 @@ tmt_rdy (void *cls, size_t size, void *buf)
   long id = (long) cls;
   unsigned int counter;
 
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "tmt_rdy on %ld, filling buffer\n", id);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "tmt_rdy on %ld, filling buffer\n",
+              id);
   if (0 == id)
     th = NULL;
   else if ((peers_requested - 1) == id)
@@ -545,7 +547,8 @@ tmt_rdy (void *cls, size_t size, void *buf)
     GNUNET_assert (0);
   counter = get_expected_target () == id ? ack_sent : data_sent;
   msg_size = size_payload + counter;
-  if (size < msg_size || NULL == buf)
+  if ( (size < msg_size) ||
+       (NULL == buf) )
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "size %u, buf %p, data_sent %u, ack_received %u\n",
@@ -569,7 +572,8 @@ tmt_rdy (void *cls, size_t size, void *buf)
     if (SPEED_ACK == test)
       data_sent++;
   }
-  else if (SPEED == test || SPEED_ACK == test)
+  else if ( (SPEED == test) ||
+            (SPEED_ACK == test) )
   {
     if (get_expected_target() == id)
       ack_sent++;
@@ -580,9 +584,11 @@ tmt_rdy (void *cls, size_t size, void *buf)
                 " Sent message %u size %u\n",
                 counter,
                 (unsigned int) msg_size);
-    if (data_sent < TOTAL_PACKETS && SPEED == test)
+    if ( (data_sent < TOTAL_PACKETS) &&
+         (SPEED == test) )
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " Scheduling message %d\n",
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  " Scheduling message %d\n",
                   counter + 1);
       data_job = GNUNET_SCHEDULER_add_now (&data_task, NULL);
     }