From ec13689ff06c08d7ac9b94bf27065e94f36581af Mon Sep 17 00:00:00 2001 From: "Schanzenbach, Martin" Date: Sun, 22 Dec 2019 21:41:51 +0900 Subject: basic tests wip --- src/transport/transport-testing2.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) (limited to 'src/transport/transport-testing2.c') diff --git a/src/transport/transport-testing2.c b/src/transport/transport-testing2.c index b354f7c2a..230c35b4f 100644 --- a/src/transport/transport-testing2.c +++ b/src/transport/transport-testing2.c @@ -358,21 +358,39 @@ check_incoming_msg (void *cls, */ static void handle_incoming_msg (void *cls, - const struct GNUNET_TRANSPORT_IncomingMessage *msg) + const struct GNUNET_TRANSPORT_IncomingMessage *inc_msg) { struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_h = cls; + struct GNUNET_MessageHeader *msg; + msg = (struct GNUNET_MessageHeader *)&inc_msg[1]; + size_t payload_len = ntohs (msg->size) - sizeof (struct + GNUNET_MessageHeader); if (NULL != tc_h->incoming_msg_cb) { tc_h->incoming_msg_cb (tc_h->cb_cls, tc_h, - msg); + (char*) &msg[1], + payload_len); } else { LOG (GNUNET_ERROR_TYPE_WARNING, "Incoming message from communicator but no handler!\n"); } + if (0 != ntohl (inc_msg->fc_on)) + { + /* send ACK when done to communicator for flow control! */ + struct GNUNET_MQ_Envelope *env; + struct GNUNET_TRANSPORT_IncomingMessageAck *ack; + + env = GNUNET_MQ_msg (ack, GNUNET_MESSAGE_TYPE_TRANSPORT_INCOMING_MSG_ACK); + ack->reserved = htonl (0); + ack->fc_id = inc_msg->fc_id; + ack->sender = inc_msg->sender; + GNUNET_MQ_send (tc_h->c_mq, env); + } + GNUNET_SERVICE_client_continue (tc_h->client); } @@ -458,7 +476,9 @@ handle_add_queue_message (void *cls, { tc_queue = tc_queue->next; } - } else { + } + else + { tc_queue = GNUNET_new (struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue); tc_queue->tc_h = tc_h; @@ -802,9 +822,7 @@ struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorTransmission * GNUNET_TRANSPORT_TESTING_transport_communicator_send (struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue *tc_queue, const void *payload, - size_t payload_size /*, - GNUNET_TRANSPORT_TESTING_SuccessStatus cb, - void *cb_cls*/) + size_t payload_size) { struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorTransmission *tc_t; struct GNUNET_MessageHeader *mh; -- cgit v1.2.3