- len = sizeof (struct GNUNET_MessageHeader) + sizeof (GNUNET_HashCode) + payload_length;
- if (len >= GNUNET_SERVER_MAX_MESSAGE_SIZE)
- {
- GNUNET_break (0);
- return;
- }
- tnq = GNUNET_malloc (sizeof (struct TunnelMessageQueue) + len);
- tnq->payload = &tnq[1];
- tnq->len = len;
- msg = (struct GNUNET_MessageHeader *) &tnq[1];
- msg->size = htons ((uint16_t) len);
- msg->type = htons (mtype);
- if (NULL != desc)
- {
- dp = (GNUNET_HashCode *) &msg[1];
- *dp = *desc;
- memcpy (&dp[1], payload, payload_length);
- }
- else
- {
- memcpy (&msg[1], payload, payload_length);
- }