diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/transport/gnunet-service-tng.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/transport/gnunet-service-tng.c b/src/transport/gnunet-service-tng.c index 76d5265a8..6c3373013 100644 --- a/src/transport/gnunet-service-tng.c +++ b/src/transport/gnunet-service-tng.c | |||
@@ -844,6 +844,11 @@ struct PendingMessage | |||
844 | struct GNUNET_ShortHashCode msg_uuid; | 844 | struct GNUNET_ShortHashCode msg_uuid; |
845 | 845 | ||
846 | /** | 846 | /** |
847 | * Message ID used for this message with the queue used for transmission. | ||
848 | */ | ||
849 | uint64_t mid; | ||
850 | |||
851 | /** | ||
847 | * Counter incremented per generated fragment. | 852 | * Counter incremented per generated fragment. |
848 | */ | 853 | */ |
849 | uint32_t frag_uuidgen; | 854 | uint32_t frag_uuidgen; |
@@ -2315,6 +2320,8 @@ transmit_on_queue (void *cls) | |||
2315 | struct PendingMessage *pm; | 2320 | struct PendingMessage *pm; |
2316 | struct PendingMessage *s; | 2321 | struct PendingMessage *s; |
2317 | uint32_t overhead; | 2322 | uint32_t overhead; |
2323 | struct GNUNET_TRANSPORT_SendMessageTo *smt; | ||
2324 | struct GNUNET_MQ_Envelope *env; | ||
2318 | 2325 | ||
2319 | queue->transmit_task = NULL; | 2326 | queue->transmit_task = NULL; |
2320 | if (NULL == (pm = n->pending_msg_head)) | 2327 | if (NULL == (pm = n->pending_msg_head)) |
@@ -2331,12 +2338,13 @@ transmit_on_queue (void *cls) | |||
2331 | s = pm; | 2338 | s = pm; |
2332 | if ( ( (0 != queue->mtu) && | 2339 | if ( ( (0 != queue->mtu) && |
2333 | (pm->bytes_msg + overhead > queue->mtu) ) || | 2340 | (pm->bytes_msg + overhead > queue->mtu) ) || |
2341 | (pm->bytes_msg > UINT16_MAX - sizeof (struct GNUNET_TRANSPORT_SendMessageTo)) || | ||
2334 | (NULL != pm->head_frag /* fragments already exist, should | 2342 | (NULL != pm->head_frag /* fragments already exist, should |
2335 | respect that even if MTU is 0 for | 2343 | respect that even if MTU is 0 for |
2336 | this queue */) ) | 2344 | this queue */) ) |
2337 | s = fragment_message (s, | 2345 | s = fragment_message (s, |
2338 | (0 == queue->mtu) | 2346 | (0 == queue->mtu) |
2339 | ? UINT16_MAX /* no real maximum */ | 2347 | ? UINT16_MAX - sizeof (struct GNUNET_TRANSPORT_SendMessageTo) |
2340 | : queue->mtu); | 2348 | : queue->mtu); |
2341 | if (NULL == s) | 2349 | if (NULL == s) |
2342 | { | 2350 | { |
@@ -2352,6 +2360,17 @@ transmit_on_queue (void *cls) | |||
2352 | schedule_transmit_on_queue (queue); | 2360 | schedule_transmit_on_queue (queue); |
2353 | return; | 2361 | return; |
2354 | } | 2362 | } |
2363 | |||
2364 | // pm->mid = queue->mid_gen++; | ||
2365 | env = GNUNET_MQ_msg_extra (smt, | ||
2366 | s->bytes_msg, | ||
2367 | GNUNET_MESSAGE_TYPE_TRANSPORT_SEND_MSG); | ||
2368 | smt->qid = queue->qid; | ||
2369 | // smt->mid = pm->mid; | ||
2370 | // smt->receiver = pid; | ||
2371 | memcpy (&smt[1], | ||
2372 | &s[1], | ||
2373 | s->bytes_msg); | ||
2355 | 2374 | ||
2356 | // FIXME: actually give 's' to communicator for transmission here! | 2375 | // FIXME: actually give 's' to communicator for transmission here! |
2357 | 2376 | ||