qmsg = consensus->messages_head;
GNUNET_CONTAINER_DLL_remove (consensus->messages_head, consensus->messages_tail, qmsg);
- GNUNET_assert (qmsg);
if (NULL == buf)
{
{
qmsg->idc (qmsg->idc_cls, GNUNET_YES);
}
- GNUNET_free (qmsg->msg);
- GNUNET_free (qmsg);
+
+ /* FIXME: free the messages */
send_next (consensus);
if (NULL != consensus->messages_head)
{
- LOG (GNUNET_ERROR_TYPE_INFO, "scheduling queued\n");
consensus->th =
GNUNET_CLIENT_notify_transmit_ready (consensus->client, ntohs (consensus->messages_head->msg->size),
GNUNET_TIME_UNIT_FOREVER_REL,
}
}
+static void
+queue_message (struct GNUNET_CONSENSUS_Handle *consensus, struct GNUNET_MessageHeader *msg)
+{
+ struct QueuedMessage *qm;
+ qm = GNUNET_malloc (sizeof *qm);
+ qm->msg = msg;
+ GNUNET_CONTAINER_DLL_insert_tail (consensus->messages_head, consensus->messages_tail, qm);
+}
+
/**
* Called when the server has sent is a new element
{
struct GNUNET_CONSENSUS_Element element;
struct GNUNET_CONSENSUS_AckMessage *ack_msg;
- struct QueuedMessage *queued_msg;
int ret;
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "received new element\n");
+
element.type = msg->element_type;
- element.size = msg->header.size - sizeof (struct GNUNET_CONSENSUS_ElementMessage);
+ element.size = ntohs (msg->header.size) - sizeof (struct GNUNET_CONSENSUS_ElementMessage);
element.data = &msg[1];
ret = consensus->new_element_cb (consensus->new_element_cls, &element);
- queued_msg = GNUNET_malloc (sizeof (struct QueuedMessage) + sizeof (struct GNUNET_CONSENSUS_AckMessage));
- queued_msg->msg = (struct GNUNET_MessageHeader *) &queued_msg[1];
-
- ack_msg = (struct GNUNET_CONSENSUS_AckMessage *) queued_msg->msg;
+ ack_msg = GNUNET_malloc (sizeof *ack_msg);
+ ack_msg->header.size = htons (sizeof *ack_msg);
+ ack_msg->header.type = htons (GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_ACK);
ack_msg->keep = ret;
- GNUNET_CONTAINER_DLL_insert_tail (consensus->messages_head, consensus->messages_tail,
- queued_msg);
+ queue_message (consensus, (struct GNUNET_MessageHeader *) ack_msg);
+
+ send_next (consensus);
}
{
struct GNUNET_CONSENSUS_Handle *consensus = cls;
- LOG (GNUNET_ERROR_TYPE_INFO, "received message from consensus service\n");
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "received message from consensus service\n");
if (msg == NULL)
{
GNUNET_assert (NULL != buf);
- LOG (GNUNET_ERROR_TYPE_INFO, "transmitting join message\n");
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "transmitting join message\n");
consensus = cls;
consensus->th = NULL;
struct GNUNET_CONSENSUS_ElementMessage *element_msg;
size_t element_msg_size;
- LOG (GNUNET_ERROR_TYPE_INFO, "inserting, size=%llu\n", element->size);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "inserting, size=%llu\n", element->size);
element_msg_size = (sizeof (struct GNUNET_CONSENSUS_ElementMessage) +
element->size);