tng: UNIX communicator fixes. Test fixes
authorMartin Schanzenbach <mschanzenbach@posteo.de>
Mon, 1 Jun 2020 16:18:00 +0000 (18:18 +0200)
committerMartin Schanzenbach <mschanzenbach@posteo.de>
Mon, 1 Jun 2020 16:18:00 +0000 (18:18 +0200)
src/transport/gnunet-communicator-unix.c
src/transport/test_communicator_basic.c
src/transport/transport-testing2.c

index 27dda72814eebd090881e51b64bd74335793143a..148f7f8862f403badcec435e96ff4804a3e1f599 100644 (file)
@@ -669,7 +669,7 @@ setup_queue (const struct GNUNET_PeerIdentity *target,
     queue->qh = GNUNET_TRANSPORT_communicator_mq_add (ch,
                                                       &queue->target,
                                                       foreign_addr,
-                                                      UNIX_MTU,
+                                                      UNIX_MTU - sizeof (struct UNIXMessage),
                                                       GNUNET_TRANSPORT_QUEUE_LENGTH_UNLIMITED,
                                                       0,
                                                       GNUNET_NT_LOOPBACK,
index 1ea79fa19d65bfa86b9e3d6f8aed7a5a60dc547b..26a10fb742485b4fe131ffa04233c6661fe5b2a8 100644 (file)
@@ -200,6 +200,8 @@ make_payload (size_t payload_size)
   struct GNUNET_TIME_AbsoluteNBO ts_n;
   char *payload = GNUNET_malloc (payload_size);
 
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "Making payload of size %lu\n", payload_size);
   GNUNET_assert (payload_size >= 8); // So that out timestamp fits
   ts = GNUNET_TIME_absolute_get ();
   ts_n = GNUNET_TIME_absolute_hton (ts);
@@ -238,10 +240,10 @@ size_test (void *cls)
   GNUNET_assert (TP_SIZE_CHECK == phase);
   if (LONG_MESSAGE_SIZE != long_message_size)
     max_size = long_message_size;
-  if (ack >= max_size)
+  if (ack + 10 > max_size)
     return; /* Leave some room for our protocol, so not 2^16 exactly */
+  ack += 10;
   payload = make_payload (ack);
-  ack += 5;
   num_sent++;
   GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc,
                                                         (ack < max_size)
@@ -470,7 +472,7 @@ incoming_message_cb (void *cls,
                     goodput,
                     (unsigned long long) avg_latency);
         GNUNET_free (goodput);
-        ack = 10;
+        ack = 0;
         phase = TP_SIZE_CHECK;
         num_received = 0;
         num_sent = 0;
@@ -481,9 +483,14 @@ incoming_message_cb (void *cls,
     }
   case TP_SIZE_CHECK:
     {
+      size_t max_size = 64000;
+
+      GNUNET_assert (TP_SIZE_CHECK == phase);
+      if (LONG_MESSAGE_SIZE != long_message_size)
+        max_size = long_message_size;
       num_received++;
       update_avg_latency (payload);
-      if (num_received >= (64000 - 10) / 5)
+      if (num_received >= (max_size) / 10)
       {
         GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
                     "Size packet test done.\n");
index 8250027f7c065eddaceabdc991e2b2232fc7059f..e85e46b1156461e5ba6abda555fe6eaef1ba5790 100644 (file)
@@ -525,6 +525,7 @@ handle_incoming_msg (void *cls,
     struct GNUNET_TRANSPORT_IncomingMessageAck *ack;
 
     env = GNUNET_MQ_msg (ack, GNUNET_MESSAGE_TYPE_TRANSPORT_INCOMING_MSG_ACK);
+    GNUNET_assert (NULL != env);
     ack->reserved = htonl (0);
     ack->fc_id = inc_msg->fc_id;
     ack->sender = inc_msg->sender;
@@ -770,6 +771,8 @@ disconnect_cb (void *cls,
     GNUNET_CONTAINER_DLL_remove (tc_h->client_head,
                                  tc_h->client_tail,
                                  cl);
+    if (cl->c_mq == tc_h->c_mq)
+      tc_h->c_mq = NULL;
     GNUNET_free (cl);
     break;
   }
@@ -1164,6 +1167,7 @@ GNUNET_TRANSPORT_TESTING_transport_communicator_send
   env = GNUNET_MQ_msg_extra (msg,
                              inbox_size,
                              GNUNET_MESSAGE_TYPE_TRANSPORT_SEND_MSG);
+  GNUNET_assert (NULL != env);
   msg->qid = htonl (tc_queue->qid);
   msg->mid = tc_queue->mid++;
   msg->receiver = tc_queue->peer_id;